Alchemy
Loading...
Searching...
No Matches

mccoy_palace_garden.c

Go to the documentation of this file.
1/// @file
2/// The garden before Lord McCoy's palace in Bilibin. Two guards keep the palace
3/// gate and let only brave warriors through; once Kolima's curse is lifted,
4/// they arrest the party for breaking it and take them to McCoy.
5///
6/// Scene flags: FLAG_SCENE_TEMP_00, the palace gate is open;
7/// FLAG_SCENE_TEMP_01, the east guard has scolded the party for keeping McCoy
8/// waiting. Flag 0x304, reused from place to place, is set in Bilibin when
9/// McCoy is looking for the party.
10
11#include "game_state.h"
12#include "scene_ids.h"
15#include "unit/object/object.h"
18#include "battle.h"
19#include "debug.h"
20#include "field.h"
21#include "game.h"
22#include "graphics.h"
23#include "menu.h"
24#include "minigame.h"
25#include "sound.h"
26#include "system.h"
27#include "mccoy_palace_garden.h"
28#include "types.h"
29#include "call.h"
30#include "field_event.h"
31#include "field_service.h"
32#include "text/msg_ids.h"
33#include "ability_ids.h"
34#include "field_scene.h"
35#include "objcmd.h"
36#include "flags.h"
37#include "facing_object.h"
38#include "songs.h"
39
40#ifdef UBFIX
41#define MCCOY_GARDEN_SET_ACTOR_POSITION Engine_ActorSetPosition
42#else
43#define MCCOY_GARDEN_SET_ACTOR_POSITION ((s32 (*)())Engine_ActorSetPosition)
44#endif
45
46enum {
53};
54
55static void Garden_ApplyProgress(void);
56static void Event_GuardsArrestParty(void);
57static void Garden_OpenPalaceGate(void);
58
60
61const struct SceneEntrance *Scene_GetEntrances(void) {
63}
64
65const struct SceneRegion *Scene_GetRegions(void) { return NULL; }
66
68
69/// The garden's people. Once McCoy has turned the party away, the east guard
70/// turns back after talking, and once the curse is lifted McCoy faces the
71/// party.
79 }
81}
82
83/// Catch on the nut floating over the garden: the party gets it.
84static void Event_CatchFloatingNut(void) {
91}
92
93/// Searching the dry well.
94static void Event_SearchWell(void) {
96 Engine_MessageShowCentered(MsgFieldPeeredWell, 1);
97 Engine_MessageShowCentered(MsgBilibinUponCloserInspectionSeemsDried, 1);
99}
100
101/// What the party can talk to, search and catch in the garden.
102const struct SceneEvent *Scene_GetEvents(void) {
105 }
107}
108
109/// The north worker asks whether the party has seen the barricade.
110static void Event_TalkToNorthWorker(void) {
112 Engine_EventSetMessage(MsgBilibinHaveYouSeenBarricadeWe);
115}
116
117/// McCoy asks whether the palace work makes him responsible for the curse.
118static void Event_TalkToMcCoy(void) {
120 Engine_EventSetMessage(MsgBilibinTellingMeImResponsibleFor);
123}
124
125/// The young west guard asks whether he can become a warrior like them.
126static void Event_TalkToWestGuard(void) {
128 Engine_EventSetMessage(MsgBilibinDoThinkCanBecomeAs);
131}
132
133/// The east guard: until he lets them in, he asks whether they are brave
134/// enough to meet McCoy and, on yes, opens the gate and walks in with his
135/// partner; after, he scolds them once for keeping McCoy waiting.
136static void Event_TalkToEastGuard(void) {
138 // Once admitted, the party only receives the guard's current reminder.
140 if (Engine_GameFlagIsSet(0x304) != 0) {
142 Engine_EventSetMessage(MsgBilibinWhere);
148 }
149 Engine_EventSetMessage(MsgBilibinMasterQuiteCranky);
151 } else {
152 Engine_EventSetMessage(MsgBilibinLordMccoyDifficult);
154 goto guard;
155 }
156 } else {
157 // On the first visit, the guards confer before opening the gate.
158 Engine_EventSetMessage(MsgBilibinLordOnlyMeet);
163 if (Object_GetById(ACTOR_PARTY_LEADER)->z.fixed < PIXELS(270)) {
164 Actor_SetSpeed(ACTOR_EAST_GUARD, 0xcccc, 0x6666);
168 }
184 Engine_ActorSetSpeed(ACTOR_EAST_GUARD, 0x10000, 0x8000);
189 Actor_SetSpeed(ACTOR_WEST_GUARD, 0x9999, 0x4ccc);
195 /* FAKEMATCH: a value-returning cast loads the actor id after the two
196 zeros; as Actor_SetPosition by its prototype, 2 instructions differ
197 in tbs-en. */
199 /* FAKEMATCH: the one-pass block keeps r0 last among the call above's
200 arguments; as a plain call, 2 instructions differ in tbs-en. */
201 do {
203 } while (0);
204 guard:
208 } else {
211 }
212 }
214}
215
216/// Walking into the palace gate: it opens if still shut and the leader walks
217/// in.
218static void Event_EnterPalace(void) {
222 }
223 Actor_SetSpeed(ACTOR_PARTY_LEADER, 0x8000, 0x4000);
230}
231
232/// Sets the garden up: the west worker drawn in front, and the guards, McCoy
233/// and the arrest as the story stands.
235 struct EventWork *work = gEventWork;
236 struct FieldActor *actor;
237
238 work->startTransition = SCENE_TRANSITION(TRANSITION_BACKDROP_FADE, 0);
239
241 actor->priorityFlags = 0;
242 actor->sprite->image.priority = 1;
243
246 }
247
248 return 0;
249}
250
251/// The guards stand where the party left them; once the curse is lifted,
252/// McCoy waits in the garden and, the first time, the guards arrest the
253/// party.
254static void Garden_ApplyProgress(void) {
257 }
260 }
270 }
271 }
272 }
273 // McCoy's outdoor meeting and the arrest happen only after the curse lifts.
280 }
281 }
282}
283
284/// Kolima's curse is lifted: the guards stop the party, ask whether they
285/// broke the holy tree's curse until they answer yes, and march them into
286/// the palace to McCoy.
287static void Event_GuardsArrestParty(void) {
288
289 // Bring the leader into view before the guards interrupt.
291 Camera_MoveTo(-1, -1, -1, 0);
292 Camera_MoveTo(0x1400000, -1, 0x1400000, 0);
297 Engine_CameraSetSpeed(0x3333, 0x666);
298 Engine_CameraMoveTo(0x1400000, -1, 0x1220000, 1);
299 Actor_SetSpeed(ACTOR_PARTY_LEADER, 0x9999, 0x4ccc);
304 Engine_EventSetMessage(MsgBilibinOhItS);
319 // Refusals repeat the accusation until the player acknowledges it.
322 Engine_EventSetMessage(MsgBilibinNotTrueWitnesses);
326 }
334 Engine_EventSetMessage(MsgBilibinUnderArrest);
336 Actor_SetSpeed(ACTOR_WEST_GUARD, 0x10000, 0x8000);
343 Engine_ActorSetSpeed(ACTOR_EAST_GUARD, 0x10000, 0x8000);
347 {
349
351 }
352 }
353 Actor_SetSpeed(ACTOR_WEST_GUARD, 0xcccc, 0x6666);
354 // Escort Isaac through the opened gate before changing to the palace.
355 Actor_SetSpeed(ACTOR_PARTY_LEADER, 0xcccc, 0x6666);
371}
372
373/// The palace gate swings open.
374static void Garden_OpenPalaceGate(void) {
378}
379
380#include "common/object_orbit.h"
381
382// clang-format off
383/// The gate opening: three steps of cells, 5 frames each.
385 MAP_CELL_STEP(34, 25, 1, 3, 5), MAP_CELL_STEP(35, 25, 1, 3, 5), MAP_CELL_STEP(36, 25, 1, 3, 5), MAP_CELL_STEPS_END,
386};
387
388/// A guard turns to keep facing the party.
390 SC_CALL(Scene_TurnTowardTarget),
392};
393
395 { 1, CONDITION_ALWAYS, 320, 0, 328, FACING_NORTH, 0, -1, -1, -1, -1, 0 },
396 { 2, CONDITION_ALWAYS, 328, 0, 272, FACING_SOUTH, 0, -1, -1, -1, -1, 0 },
397 { SCENE_TABLE_END },
398};
399
401 SCENE_EXITS(34),
402 SCENE_EXIT(1, 30, 2),
403 SCENE_EXIT(2, 33, 1),
404 SCENE_EXIT(10, 33, 29),
406};
407
409 { SCENE_TABLE_END },
410};
411
416 PIXELS(135), 0, PIXELS(200), FACING_SOUTH, TALK_FACE_PARTY, 0 },
424 PIXELS(216), 0, PIXELS(344), FACING_SOUTH, TALK_KEEP_FACING, 0 },
425#if TBS_PATCH_3
427 PIXELS(132), 0, PIXELS(388), FACING_SOUTH, TALK_KEEP_FACING, 0 },
428#endif
429 { SCENE_TABLE_END },
430};
431
434};
435
437 { EVENT_EXIT, 1, CONDITION_ALWAYS, 1 },
439 { EVENT_TALK, ACTOR_WEST_WORKER, FLAG_KOLIMA_CURSE_LIFTED, MSGNO(MsgBilibinTheLumberIOrderedFromKolima) },
440 { EVENT_TALK, ACTOR_WEST_WORKER, CONDITION_ALWAYS, MSGNO(MsgBilibinNowThatTheCurseIsBroken) },
442 { EVENT_TALK, ACTOR_NORTH_WORKER, CONDITION_ALWAYS, MSGNO(MsgBilibinItsOverOverMilordDecidedNot) },
444 { EVENT_TALK, ACTOR_LORD_MCCOY, CONDITION_ALWAYS, MSGNO(MsgBilibinHmphMyPalaceIsNotFinished) },
445 { EVENT_TALK, ACTOR_WEST_GUARD, FLAG_MCCOY_PALACE_BARRICADE_HINT, MSGNO(MsgBilibinLordMccoyIsSoUpsetAbout) },
446 { EVENT_TALK, ACTOR_WEST_GUARD, FLAG_MCCOY_PALACE_REWARD_TAKEN, MSGNO(MsgBilibinICantTellYouAnythingElse) },
449 { EVENT_TALK, ACTOR_EAST_GUARD, FLAG_MCCOY_PALACE_REWARD_TAKEN, MSGNO(MsgBilibinWhatAShameHuhIGuess) },
450 { EVENT_TALK, ACTOR_EAST_GUARD, CONDITION_ALWAYS, MSGNO(MsgBilibinICouldNeverHaveGoneTo) },
451 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_WEST_WORKER, FLAG_KOLIMA_CURSE_LIFTED, MSGNO(MsgBilibinIfThingsLikeThisAreGoing) },
452 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_WEST_WORKER, CONDITION_ALWAYS, MSGNO(MsgBilibinWedStillBeWorkingIfWe) },
453 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_NORTH_WORKER, FLAG_KOLIMA_CURSE_LIFTED, MSGNO(MsgBilibinIAmGladIDidntKnow) },
454 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_NORTH_WORKER, CONDITION_ALWAYS, MSGNO(MsgBilibinThatWasCloseBuildingACursed) },
455 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_LORD_MCCOY, FLAG_KOLIMA_CURSE_LIFTED, MSGNO(MsgBilibinIfAllThisTroubleWasCaused) },
456 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_LORD_MCCOY, CONDITION_ALWAYS, MSGNO(MsgBilibinHeSaidHeStoppedConstructionSo) },
457 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_WEST_GUARD, FLAG_MCCOY_PALACE_ADMITTED, MSGNO(MsgBilibinNoOneBelievedTheyWouldTurn) },
458 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_WEST_GUARD, FLAG_MCCOY_PALACE_REWARD_TAKEN, MSGNO(MsgBilibinThatBarricadeIsPrettyShabbyIt) },
459 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_WEST_GUARD, CONDITION_ALWAYS, MSGNO(MsgBilibinIWillBeAReliableWarrior) },
460 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_EAST_GUARD, FLAG_MCCOY_PALACE_ADMITTED, MSGNO(MsgBilibinIsThereNoOneWhoCan) },
461 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_EAST_GUARD, FLAG_MCCOY_PALACE_BARRICADE_HINT, MSGNO(MsgBilibinLordMccoyWouldNeverHireAnyone) },
462 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_EAST_GUARD, FLAG_MCCOY_PALACE_REWARD_TAKEN, MSGNO(MsgBilibinIDidntThinkTheydLetYou) },
463 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_EAST_GUARD, CONDITION_ALWAYS, MSGNO(MsgBilibinDontLeaveIsaacBeMyMentor) },
467};
468// clang-format on
Ability numbers, named from the English release.
@ ABILITY_MIND_READ
Definition ability_ids.h:16
@ ABILITY_CATCH
Definition ability_ids.h:23
struct FieldActor * Object_GetById(s32 actor)
Returns an actor, or NULL if it does not exist.
const struct ScenePlacement * Scene_GetPlacements(void)
const struct SceneEntrance * Scene_GetEntrances(void)
const struct SceneEvent * Scene_GetEvents(void)
const u32 * Scene_GetExits(void)
Both scenes share one exit table.
const struct SceneRegion * Scene_GetRegions(void)
s32 Scene_Initialize(void)
Sets up whichever scene is being entered and runs its arrival events.
Calls through a function pointer, by argument count.
The engine calls the debug menus import, and their palette swatch tiles.
FacingObject, the view of an object that turns to face a target.
The scene script layer: the engine services a scene's events call, declared once (Engine_EventBegin,...
@ ANIM_WALK
Definition field_event.h:44
static void Actor_FaceDirection(s32 actor, s32 facing, s32 frames)
void Engine_ActorSetAnimationAndWait(s32 actor, s32 animation)
s32 Engine_EventChooseYesNo(s32 actor, s32 flags)
void Engine_MessageShowCentered(s32 message, s32 flags)
s32 Engine_PartyGiveItem(s32 item, s32 flags)
void Engine_EventShowMessageAndWait(s32 speaker, s32 flags, s32 frames)
#define GameFlag_IsSet
void Engine_CameraSetSpeed(s32 speed, s32 acceleration)
static void Actor_WalkToAndWait(s32 actor, s32 x, s32 z)
void Engine_CameraMoveTo(s32 fixed_x, s32 fixed_y, s32 fixed_z, s32 pan)
#define EMOTE_IN_FRONT
Definition field_event.h:49
#define MAP_CELL_STEP(srcX, srcY, width, height, frames)
Definition field_event.h:59
void Engine_ItemShowFound(s32 item, s32 height)
void Engine_ActorSetSpeed(s32 actor, s32 speed, s32 acceleration)
void Engine_ActorFaceDirection(s32 actor, s32 facing, s32 frames)
void Engine_EventCloseScreen(void)
void Engine_ActorWalkToAndWait(s32 actor, s32 x, s32 z)
static void Actor_WalkTo(s32 actor, s32 x, s32 z)
void Engine_EventWaitForScreen(void)
static void Actor_ShowEmote(s32 actor, s32 emote, s32 frames)
s32 Engine_EventAskYesNo(s32 speaker, s32 flags)
void Engine_EventOpenScreen(void)
s32 Engine_EventOpenMessage(s32 speaker, s32 flags)
void Engine_GameFlagSet(s32 flag)
void Engine_GameFlagClear(s32 flag)
void Engine_ActorWaitForMove(s32 actor)
void Engine_ActorRunRepeatedMotion(s32 actor, s32 repeats)
#define MAP_CELL_STEPS_END
Definition field_event.h:61
s32 Engine_GameFlagIsSet(s32 flag)
void Engine_MapAnimateCells(const u16 *steps, s32 destX, s32 destY)
void Engine_ActorStartRepeatedMotion(s32 actor, s32 repeats)
static void Actor_CenterAndWalk(s32 actor, s32 priority, s32 dz)
static void Actor_SetSpeed(s32 actor, s32 speed, s32 acceleration)
void Engine_MapRedraw(void)
static void Camera_MoveTo(s32 fixed_x, s32 fixed_y, s32 fixed_z, s32 pan)
static void Actor_SetPosition(s32 actor, s32 fixed_x, s32 fixed_z)
void Engine_EventWait(s32 frames)
static void Actor_SetAttachedEffect(s32 actor, s32 effect)
@ ACTOR_LINK_KEEP_MOTION
Definition field_obj.h:148
@ TRANSITION_WINDOW
Definition field_obj.h:17
@ TRANSITION_BACKDROP_FADE
Definition field_obj.h:16
#define SCENE_TRANSITION(style, variant)
Definition field_obj.h:20
@ ACTOR_FACES_MOTION
turns toward its velocity, 1/16 turn a frame
Definition field_obj.h:166
The scene table formats: entrances, exits, placements and events, and the macros that write them.
#define SCENE_EVENTS_END
@ EVENT_EXIT
@ EVENT_TALK
@ FACING_STEP
Definition field_scene.h:36
#define SCENE_EXITS(scene)
Definition field_scene.h:72
#define SCENE_EXIT(exit, scene, entrance)
Definition field_scene.h:73
@ ACTOR_PARTY_LEADER
@ SCENE_TABLE_END
Definition field_scene.h:43
@ CONDITION_ALWAYS
Definition field_scene.h:44
@ TALK_KEEP_FACING
@ TALK_FACE_PARTY
@ TALK_FACE_PARTY_AND_BACK
#define PSYNERGY_ON_ACTOR(ability)
#define EVENT_SCRIPT(script)
@ ACTOR_WANDER
@ ACTOR_STAND
#define SEARCH(target)
#define SCENE_EXITS_END
Definition field_scene.h:77
#define TOUCH_WALKING_INTO(facing)
@ FACING_NORTHEAST
Definition field_scene.h:33
@ FACING_EAST
Definition field_scene.h:26
@ FACING_SOUTHEAST
Definition field_scene.h:27
@ FACING_NORTH
Definition field_scene.h:32
@ FACING_SOUTHWEST
Definition field_scene.h:29
@ FACING_SOUTH
Definition field_scene.h:28
@ FACING_WEST
Definition field_scene.h:30
#define PIXELS(value)
@ SEARCH_UNNAMED
The scene service layer: one typed inline for each engine service a scene calls by its own name,...
static void FieldObject_SetTargetAndCallback(s32 object, s32 target, const s32 *actions)
Game flags, named where their meaning is shown.
#define FLAG_MCCOY_PALACE_REWARD_TAKEN
Definition flags.h:105
#define FLAG_MCCOY_PALACE_GARDEN_NUT_CAUGHT
the floating nut
Definition flags.h:334
#define FLAG_MCCOY_PALACE_PARTY_REWARDED
The escort has seen the party off after McCoy's reward.
Definition flags.h:329
#define FLAG_MCCOY_PALACE_ADMITTED
The gate guards have let the party into the palace.
Definition flags.h:323
#define FLAG_SCENE_TEMP_00
Definition flags.h:713
#define FLAG_MCCOY_PALACE_BARRICADE_HINT
After McCoy turned the party away, his escort let slip that the barricade may not need a key.
Definition flags.h:327
#define FLAG_KEEP_PARTY_POSITION
Definition flags.h:93
#define FLAG_KOLIMA_CURSE_LIFTED
Definition flags.h:103
#define FLAG_SCENE_TEMP_01
Definition flags.h:714
GameState, the game's state: play time, coins, the scene and the leader's position,...
struct GameState gGameState
The screen blend's globals and the graphics routines.
@ ITEM_NUT
Definition item_ids.h:41
static void Event_TalkToWestGuard(void)
The west guard of the town asks whether the party wants in.
Definition lunpa.c:249
static void Event_SearchWell(void)
Definition lunpa.c:226
static void Event_TalkToEastGuard(void)
The east guard: wants authorization, or once the guards suspect Kalay, asks twice whether the party c...
Definition lunpa.c:259
static void Event_CatchFloatingNut(void)
Catch on the nut floating over the town: the party gets it.
Definition lunpa.c:105
@ ACTOR_LORD_MCCOY
u32 gMcCoyPalaceGardenExits[]
static void Event_GuardsArrestParty(void)
Kolima's curse is lifted: the guards stop the party, ask whether they broke the holy tree's curse unt...
struct SceneEvent gMcCoyPalaceGardenEventsOther[]
s32 gGuardWatchesParty[]
A guard turns to keep facing the party.
static void Event_TalkToNorthWorker(void)
The north worker asks whether the party has seen the barricade.
struct SceneEntrance gMcCoyPalaceGardenEntrances[]
static void Event_TalkToMcCoy(void)
McCoy asks whether the palace work makes him responsible for the curse.
struct SceneEvent gMcCoyPalaceGardenEvents[]
@ ACTOR_WEST_WORKER
@ ACTOR_NORTH_WORKER
struct ScenePlacement gMcCoyPalaceGardenPlacements[]
static void Garden_ApplyProgress(void)
The guards stand where the party left them; once the curse is lifted, McCoy waits in the garden and,...
static void Garden_OpenPalaceGate(void)
The palace gate swings open.
struct ScenePlacement gMcCoyPalaceGardenPlacementsOther[]
#define MCCOY_GARDEN_SET_ACTOR_POSITION
static void Event_EnterPalace(void)
Walking into the palace gate: it opens if still shut and the leader walks in.
u16 gPalaceGateOpenSteps[]
The gate opening: three steps of cells, 5 frames each.
The reel game's title lettering.
Field object scripts: one s32 command word, then its operands, as gScriptObject_CommandTable runs the...
#define SC_LOOP(n, to)
Repeat up to n times.
Definition objcmd.h:28
#define SC_FOREVER
Definition objcmd.h:14
#define SC_TOP
Script start.
Definition objcmd.h:13
#define SC_CALL(fn)
Definition objcmd.h:50
Scene numbers, named after their places.
char SceneId_McCoyPalaceGarden
Song and sound effect ids, indices into gSound_SongTable.
#define SE_188
Definition songs.h:183
void Engine_ActorSetAnimation()
struct EventWork * gEventWork
void Engine_EventRequestExit()
void Engine_ActorSetPosition(u32 actor, s32 x, s32 z)
void Engine_EventEnd(void)
void Engine_AudioPlayCue()
void Engine_EventBegin(void)
void Engine_ActorShowEmote()
void Engine_TaskWait()
void Engine_EventSetMessage()
void Engine_EventShowMessage()
#define NULL
Definition bilibin.h:6
void Scene_FloatNut(s32 id)
Draws actor id as the Nut's icon and starts it floating, 32 pixels up unless the party returns to whe...
@ ACTOR_FLOATING_NUT
Definition lunpa.h:115
@ ACTOR_EAST_GUARD
Definition lunpa.h:113
@ ACTOR_WEST_GUARD
Definition lunpa.h:112
The running scene's event work: its placement and event tables, its actors, the triggers and exit it ...
Definition event_work.h:20
s32 startTransition
SCENE_TRANSITION(style, variant).
Definition event_work.h:43
u16 message
the next message, advanced as each window opens
Definition event_work.h:47
A field actor: a person or thing on the field with a position, motion toward a target,...
Definition field_obj.h:30
u8 steeringFlags
ActorSteeringFlag bits.
Definition field_obj.h:92
u8 priorityFlags
ActorPriorityFlag bits, read by the scrolling camera.
Definition field_obj.h:51
u16 work
The side of the player's next footprint (2 after a stop), or scene scratch.
Definition field_obj.h:112
A scene entrance: where and facing which way the party arrives, and the camera's bounds there (-1 for...
Definition field_scene.h:54
A scene event: its kind and detail, the trigger it answers, its condition and its value (a message or...
An actor a scene places: its sprite, the condition for placing it, how it behaves,...
Definition field_scene.h:81
u8 talkFacing
enum ActorTalkFacing; 3 follows the leader afterwards
Definition field_scene.h:95
A scene's exit region: the box that, while its condition holds, takes the party leader out through it...
The system's routines and globals: interrupts, BIOS sound bias, random numbers and sleep.
The integer types, TRUE, UNUSED and the fixed-address macros.
signed int s32
Definition types.h:14
unsigned int u32
Definition types.h:15
unsigned short u16
Definition types.h:13