diff options
author | mid-kid <esteve.varela@gmail.com> | 2018-03-13 13:07:16 +0100 |
---|---|---|
committer | mid-kid <esteve.varela@gmail.com> | 2018-03-13 13:21:40 +0100 |
commit | baa0dc5a963a79843b37888bcfe1d2dfe833ade9 (patch) | |
tree | 968c86105bd67a3121d8f3f20018bfc59191f4c9 /engine/events.asm | |
parent | 12070ca50067d3abe36a730190f88ee43f2cace9 (diff) |
Organize the engine/ directory
This is an informed attempt at reorganizing the engine/ directory by
creating categorized subdirectories, in order to make it easier to
navigate and find things.
The directories created are as follows:
* engine/game: Contains all "minigames", things like the unown puzzle
and slot machine.
* engine/gfx: Contains all handling of graphics. From loading palettes
to playing animations.
* engine/link: Contains all multiplayer functionality.
* engine/menu: Contains all generic/misc. menus and menu code.
Other, more specialized menus are in their own subdirectories (pokedex,
pokegear, party menu, etc).
* engine/overworld: Contains all handling of the overworld. From loading
and connecting maps to wild encounters and the scripting engine.
* engine/pokegear: In the same vein as engine/pokedex, except it could
use some more splitting up.
* engine/pokemon: Contains everything related to manipulating pokemon
data. From the pokemon storage system to evolution and mail.
* engine/printer: Contains everything related to printing things as well
as the printer communication.
* engine/title: Contains intro sequences, title screens and credits.
Diffstat (limited to 'engine/events.asm')
-rw-r--r-- | engine/events.asm | 1111 |
1 files changed, 0 insertions, 1111 deletions
diff --git a/engine/events.asm b/engine/events.asm deleted file mode 100644 index 35a54138b..000000000 --- a/engine/events.asm +++ /dev/null @@ -1,1111 +0,0 @@ -INCLUDE "constants.asm" - - -SECTION "Events", ROMX - -OverworldLoop:: ; 966b0 - xor a - ld [wMapStatus], a -.loop - ld a, [wMapStatus] - ld hl, .jumps - rst JumpTable - ld a, [wMapStatus] - cp 3 ; done - jr nz, .loop -.done - ret - -.jumps - dw StartMap - dw EnterMap - dw HandleMap - dw .done -; 966cb - -DisableEvents: ; 966cb - xor a - ld [wScriptFlags3], a - ret -; 966d0 - -EnableEvents:: ; 966d0 - ld a, $ff - ld [wScriptFlags3], a - ret -; 966d6 - -CheckBit5_ScriptFlags3: ; 966d6 - ld hl, wScriptFlags3 - bit 5, [hl] - ret -; 966dc - -DisableWarpsConnxns: ; 966dc - ld hl, wScriptFlags3 - res 2, [hl] - ret -; 966e2 - -DisableCoordEvents: ; 966e2 - ld hl, wScriptFlags3 - res 1, [hl] - ret -; 966e8 - -DisableStepCount: ; 966e8 - ld hl, wScriptFlags3 - res 0, [hl] - ret -; 966ee - -DisableWildEncounters: ; 966ee - ld hl, wScriptFlags3 - res 4, [hl] - ret -; 966f4 - -EnableWarpsConnxns: ; 966f4 - ld hl, wScriptFlags3 - set 2, [hl] - ret -; 966fa - -EnableCoordEvents: ; 966fa - ld hl, wScriptFlags3 - set 1, [hl] - ret -; 96700 - -EnableStepCount: ; 96700 - ld hl, wScriptFlags3 - set 0, [hl] - ret -; 96706 - -EnableWildEncounters: ; 96706 - ld hl, wScriptFlags3 - set 4, [hl] - ret -; 9670c - -CheckWarpConnxnScriptFlag: ; 9670c - ld hl, wScriptFlags3 - bit 2, [hl] - ret -; 96712 - -CheckCoordEventScriptFlag: ; 96712 - ld hl, wScriptFlags3 - bit 1, [hl] - ret -; 96718 - -CheckStepCountScriptFlag: ; 96718 - ld hl, wScriptFlags3 - bit 0, [hl] - ret -; 9671e - -CheckWildEncountersScriptFlag: ; 9671e - ld hl, wScriptFlags3 - bit 4, [hl] - ret -; 96724 - -StartMap: ; 96724 - xor a - ld [wScriptVar], a - xor a - ld [wScriptRunning], a - ld hl, wMapStatus - ld bc, wMapStatusEnd - wMapStatus - call ByteFill - farcall InitCallReceiveDelay - call ClearJoypad -EnterMap: ; 9673e - xor a - ld [wXYComparePointer], a - ld [wXYComparePointer + 1], a - call SetUpFiveStepWildEncounterCooldown - farcall RunMapSetupScript - call DisableEvents - - ld a, [hMapEntryMethod] - cp MAPSETUP_CONNECTION - jr nz, .dont_enable - call EnableEvents -.dont_enable - - ld a, [hMapEntryMethod] - cp MAPSETUP_RELOADMAP - jr nz, .dontresetpoison - xor a - ld [wPoisonStepCount], a -.dontresetpoison - - xor a ; end map entry - ld [hMapEntryMethod], a - ld a, 2 ; HandleMap - ld [wMapStatus], a - ret -; 9676d - -UnusedWait30Frames: ; 9676d - ld c, 30 - call DelayFrames - ret -; 96773 - -HandleMap: ; 96773 - call ResetOverworldDelay - call HandleMapTimeAndJoypad - farcall HandleCmdQueue ; no need to farcall - call MapEvents - -; Not immediately entering a connected map will cause problems. - ld a, [wMapStatus] - cp 2 ; HandleMap - ret nz - - call HandleMapObjects - call NextOverworldFrame - call HandleMapBackground - call CheckPlayerState - ret -; 96795 - -MapEvents: ; 96795 - ld a, [wMapEventStatus] - ld hl, .jumps - rst JumpTable - ret - -.jumps - dw .events - dw .no_events -; 967a1 - -.events ; 967a1 - call PlayerEvents - call DisableEvents - farcall ScriptEvents - ret -; 967ae - -.no_events ; 967ae - ret -; 967af - -MaxOverworldDelay: ; 967af - db 2 -; 967b0 - -ResetOverworldDelay: ; 967b0 - ld a, [MaxOverworldDelay] - ld [wOverworldDelay], a - ret -; 967b7 - -NextOverworldFrame: ; 967b7 - ld a, [wOverworldDelay] - and a - ret z - ld c, a - call DelayFrames - ret -; 967c1 - -HandleMapTimeAndJoypad: ; 967c1 - ld a, [wMapEventStatus] - cp 1 ; no events - ret z - - call UpdateTime - call GetJoypad - call TimeOfDayPals - ret -; 967d1 - -HandleMapObjects: ; 967d1 - farcall HandleNPCStep ; engine/map_objects.asm - farcall _HandlePlayerStep - call _CheckObjectEnteringVisibleRange - ret -; 967e1 - -HandleMapBackground: ; 967e1 - farcall _UpdateSprites - farcall ScrollScreen - farcall PlaceMapNameSign - ret -; 967f4 - -CheckPlayerState: ; 967f4 - ld a, [wPlayerStepFlags] - bit 5, a ; in the middle of step - jr z, .events - bit 6, a ; stopping step - jr z, .noevents - bit 4, a ; in midair - jr nz, .noevents - call EnableEvents -.events - ld a, 0 ; events - ld [wMapEventStatus], a - ret - -.noevents - ld a, 1 ; no events - ld [wMapEventStatus], a - ret -; 96812 - -_CheckObjectEnteringVisibleRange: ; 96812 - ld hl, wPlayerStepFlags - bit 6, [hl] - ret z - farcall CheckObjectEnteringVisibleRange - ret -; 9681f - -PlayerEvents: ; 9681f - xor a -; If there's already a player event, don't interrupt it. - ld a, [wScriptRunning] - and a - ret nz - - call Dummy_CheckScriptFlags3Bit5 ; This is a waste of time - - call CheckTrainerBattle3 - jr c, .ok - - call CheckTileEvent - jr c, .ok - - call RunMemScript - jr c, .ok - - call RunSceneScript - jr c, .ok - - call CheckTimeEvents - jr c, .ok - - call OWPlayerInput - jr c, .ok - - xor a - ret - -.ok - push af - farcall EnableScriptMode - pop af - - ld [wScriptRunning], a - call DoPlayerEvent - ld a, [wScriptRunning] - cp PLAYEREVENT_CONNECTION - jr z, .ok2 - cp PLAYEREVENT_JOYCHANGEFACING - jr z, .ok2 - - xor a - ld [wLandmarkSignTimer], a - -.ok2 - scf - ret -; 96867 - -CheckTrainerBattle3: ; 96867 - nop - nop - call CheckTrainerBattle2 - jr nc, .nope - - ld a, PLAYEREVENT_SEENBYTRAINER - scf - ret - -.nope - xor a - ret -; 96874 - -CheckTileEvent: ; 96874 -; Check for warps, coord events, or wild battles. - - call CheckWarpConnxnScriptFlag - jr z, .connections_disabled - - farcall CheckMovingOffEdgeOfMap - jr c, .map_connection - - call CheckWarpTile - jr c, .warp_tile - -.connections_disabled - call CheckCoordEventScriptFlag - jr z, .coord_events_disabled - - call CheckCurrentMapCoordEvents - jr c, .coord_event - -.coord_events_disabled - call CheckStepCountScriptFlag - jr z, .step_count_disabled - - call CountStep - ret c - -.step_count_disabled - call CheckWildEncountersScriptFlag - jr z, .ok - - call RandomEncounter - ret c - jr .ok ; pointless - -.ok - xor a - ret - -.map_connection - ld a, PLAYEREVENT_CONNECTION - scf - ret - -.warp_tile - ld a, [wPlayerStandingTile] - call CheckPitTile - jr nz, .not_pit - ld a, PLAYEREVENT_FALL - scf - ret - -.not_pit - ld a, PLAYEREVENT_WARP - scf - ret - -.coord_event - ld hl, wCurCoordEventScriptAddr - ld a, [hli] - ld h, [hl] - ld l, a - call GetMapScriptsBank - call CallScript - ret -; 968c7 - -CheckWildEncounterCooldown:: ; 968c7 - ld hl, wWildEncounterCooldown - ld a, [hl] - and a - ret z - dec [hl] - ret z - scf - ret -; 968d1 - -SetUpFiveStepWildEncounterCooldown: ; 968d1 - ld a, 5 - ld [wWildEncounterCooldown], a - ret -; 968d7 - -ret_968d7: ; 968d7 - ret -;968d8 - -SetMinTwoStepWildEncounterCooldown: ; 968d8 - ld a, [wWildEncounterCooldown] - cp 2 - ret nc - ld a, 2 - ld [wWildEncounterCooldown], a - ret -; 968e4 - -Dummy_CheckScriptFlags3Bit5: ; 968e4 - call CheckBit5_ScriptFlags3 - ret z - call ret_2f3e - ret -; 968ec - -RunSceneScript: ; 968ec - ld a, [wCurrMapSceneScriptCount] - and a - jr z, .nope - - ld c, a - call CheckScenes - cp c - jr nc, .nope - - ld e, a - ld d, 0 - ld hl, wCurrMapSceneScriptsPointer - ld a, [hli] - ld h, [hl] - ld l, a -rept 4 - add hl, de -endr - - call GetMapScriptsBank - call GetFarHalfword - call GetMapScriptsBank - call CallScript - - ld hl, wScriptFlags - res 3, [hl] - - farcall EnableScriptMode - farcall ScriptEvents - - ld hl, wScriptFlags - bit 3, [hl] - jr z, .nope - - ld hl, wPriorityScriptAddr - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wPriorityScriptBank] - call CallScript - scf - ret - -.nope - xor a - ret -; 9693a - -CheckTimeEvents: ; 9693a - ld a, [wLinkMode] - and a - jr nz, .nothing - - ld hl, wStatusFlags2 - bit STATUSFLAGS2_BUG_CONTEST_TIMER_F, [hl] - jr z, .do_daily - - farcall CheckBugContestTimer - jr c, .end_bug_contest - xor a - ret - -.do_daily - farcall CheckDailyResetTimer - farcall CheckPokerusTick - farcall CheckPhoneCall - ret c - -.nothing - xor a - ret - -.end_bug_contest - ld a, BANK(BugCatchingContestOverScript) - ld hl, BugCatchingContestOverScript - call CallScript - scf - ret -; 96970 - -.unused ; 96970 - ld a, 8 - scf - ret -; 96974 - -OWPlayerInput: ; 96974 - - call PlayerMovement - ret c - and a - jr nz, .NoAction - -; Can't perform button actions while sliding on ice. - farcall CheckStandingOnIce - jr c, .NoAction - - call CheckAPressOW - jr c, .Action - - call CheckMenuOW - jr c, .Action - -.NoAction: - xor a - ret - -.Action: - push af - farcall StopPlayerForEvent - pop af - scf - ret -; 96999 - -CheckAPressOW: ; 96999 - ld a, [hJoyPressed] - and A_BUTTON - ret z - call TryObjectEvent - ret c - call TryBGEvent - ret c - call TryTileCollisionEvent - ret c - xor a - ret -; 969ac - -PlayTalkObject: ; 969ac - push de - ld de, SFX_READ_TEXT_2 - call PlaySFX - pop de - ret -; 969b5 - -TryObjectEvent: ; 969b5 - farcall CheckFacingObject - jr c, .IsObject - xor a - ret - -.IsObject: - call PlayTalkObject - ld a, [hObjectStructIndexBuffer] - call GetObjectStruct - ld hl, OBJECT_MAP_OBJECT_INDEX - add hl, bc - ld a, [hl] - ld [hLastTalked], a - - ld a, [hLastTalked] - call GetMapObject - ld hl, MAPOBJECT_COLOR - add hl, bc - ld a, [hl] - and %00001111 - -; Bug: If IsInArray returns nc, data at bc will be executed as code. - push bc - ld de, 3 - ld hl, .pointers - call IsInArray - jr nc, .nope_bugged - pop bc - - inc hl - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -.nope_bugged - ; pop bc - xor a - ret - -.pointers - dbw OBJECTTYPE_SCRIPT, .script - dbw OBJECTTYPE_ITEMBALL, .itemball - dbw OBJECTTYPE_TRAINER, .trainer - ; the remaining four are dummy events - dbw OBJECTTYPE_3, .three - dbw OBJECTTYPE_4, .four - dbw OBJECTTYPE_5, .five - dbw OBJECTTYPE_6, .six - db -1 -; 96a04 - -.script ; 96a04 - ld hl, MAPOBJECT_SCRIPT_POINTER - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - call GetMapScriptsBank - call CallScript - ret -; 96a12 - -.itemball ; 96a12 - ld hl, MAPOBJECT_SCRIPT_POINTER - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - call GetMapScriptsBank - ld de, wEngineBuffer1 - ld bc, 2 - call FarCopyBytes - ld a, PLAYEREVENT_ITEMBALL - scf - ret -; 96a29 - -.trainer ; 96a29 - call TalkToTrainer - ld a, PLAYEREVENT_TALKTOTRAINER - scf - ret -; 96a30 - -.three ; 96a30 - xor a - ret -; 96a32 - -.four ; 96a32 - xor a - ret -; 96a34 - -.five ; 96a34 - xor a - ret -; 96a36 - -.six ; 96a36 - xor a - ret -; 96a38 - -TryBGEvent: ; 96a38 - call CheckFacingBGEvent - jr c, .is_bg_event - xor a - ret - -.is_bg_event: - ld a, [wEngineBuffer3] - ld hl, .bg_events - rst JumpTable - ret - -.bg_events - dw .read - dw .up - dw .down - dw .right - dw .left - dw .ifset - dw .ifnotset - dw .itemifset - dw .copy -; 96a59 - -.up - ld b, OW_UP - jr .checkdir -.down - ld b, OW_DOWN - jr .checkdir -.right - ld b, OW_RIGHT - jr .checkdir -.left - ld b, OW_LEFT - jr .checkdir - -.checkdir - ld a, [wPlayerDirection] - and %1100 - cp b - jp nz, .dontread - -.read - call PlayTalkObject - ld hl, wEngineBuffer4 - ld a, [hli] - ld h, [hl] - ld l, a - call GetMapScriptsBank - call CallScript - scf - ret - -.itemifset - call CheckBGEventFlag - jp nz, .dontread - call PlayTalkObject - call GetMapScriptsBank - ld de, wEngineBuffer1 - ld bc, 3 - call FarCopyBytes - ld a, BANK(HiddenItemScript) - ld hl, HiddenItemScript - call CallScript - scf - ret - -.copy - call CheckBGEventFlag - jr nz, .dontread - call GetMapScriptsBank - ld de, wEngineBuffer1 - ld bc, 3 - call FarCopyBytes - jr .dontread - -.ifset - call CheckBGEventFlag - jr z, .dontread - jr .thenread - -.ifnotset - call CheckBGEventFlag - jr nz, .dontread - -.thenread - push hl - call PlayTalkObject - pop hl - inc hl - inc hl - call GetMapScriptsBank - call GetFarHalfword - call GetMapScriptsBank - call CallScript - scf - ret - -.dontread - xor a - ret -; 96ad8 - -CheckBGEventFlag: ; 96ad8 - ld hl, wEngineBuffer4 - ld a, [hli] - ld h, [hl] - ld l, a - push hl - call GetMapScriptsBank - call GetFarHalfword - ld e, l - ld d, h - ld b, CHECK_FLAG - call EventFlagAction - ld a, c - and a - pop hl - ret -; 96af0 - -PlayerMovement: ; 96af0 - farcall DoPlayerMovement - ld a, c - ld hl, .pointers - rst JumpTable - ld a, c - ret -; 96afd - -.pointers - dw .zero - dw .one - dw .two - dw .three - dw .four - dw .five - dw .six - dw .seven - -.zero -.four ; 96b0d - xor a - ld c, a - ret -; 96b10 - -.seven ; 96b10 - call ret_968d7 ; mobile - xor a - ld c, a - ret -; 96b16 - -.one ; 96b16 - ld a, 5 - ld c, a - scf - ret -; 96b1b - -.two ; 96b1b - ld a, 9 - ld c, a - scf - ret -; 96b20 - -.three ; 96b20 -; force the player to move in some direction - ld a, BANK(Script_ForcedMovement) - ld hl, Script_ForcedMovement - call CallScript -; ld a, -1 - ld c, a - scf - ret -; 96b2b - -.five -.six ; 96b2b - ld a, -1 - ld c, a - and a - ret -; 96b30 - -CheckMenuOW: ; 96b30 - xor a - ld [hMenuReturn], a - ld [hMenuReturn + 1], a - ld a, [hJoyPressed] - - bit SELECT_F, a - jr nz, .Select - - bit START_F, a - jr z, .NoMenu - - ld a, BANK(StartMenuScript) - ld hl, StartMenuScript - call CallScript - scf - ret - -.NoMenu: - xor a - ret - -.Select: - call PlayTalkObject - ld a, BANK(SelectMenuScript) - ld hl, SelectMenuScript - call CallScript - scf - ret -; 96b58 - -StartMenuScript: ; 96b58 - callasm StartMenu - jump StartMenuCallback -; 96b5f - -SelectMenuScript: ; 96b5f - callasm SelectMenu - jump SelectMenuCallback -; 96b66 - -StartMenuCallback: -SelectMenuCallback: ; 96b66 - copybytetovar hMenuReturn - ifequal HMENURETURN_SCRIPT, .Script - ifequal HMENURETURN_ASM, .Asm - end -; 96b72 - -.Script: ; 96b72 - ptjump wQueuedScriptBank -; 96b75 - -.Asm: ; 96b75 - ptcallasm wQueuedScriptBank - end -; 96b79 - -CountStep: ; 96b79 - ; Don't count steps in link communication rooms. - ld a, [wLinkMode] - and a - jr nz, .done - - ; If there is a special phone call, don't count the step. - farcall CheckSpecialPhoneCall - jr c, .doscript - - ; If Repel wore off, don't count the step. - call DoRepelStep - jr c, .doscript - - ; Count the step for poison and total steps - ld hl, wPoisonStepCount - inc [hl] - ld hl, wStepCount - inc [hl] - ; Every 256 steps, increase the happiness of all your Pokemon. - jr nz, .skip_happiness - - farcall StepHappiness - -.skip_happiness - ; Every 256 steps, offset from the happiness incrementor by 128 steps, - ; decrease the hatch counter of all your eggs until you reach the first - ; one that is ready to hatch. - ld a, [wStepCount] - cp $80 - jr nz, .skip_egg - - farcall DoEggStep - jr nz, .hatch - -.skip_egg - ; Increase the EXP of (both) DayCare Pokemon by 1. - farcall DayCareStep - - ; Every four steps, deal damage to all Poisoned Pokemon - ld hl, wPoisonStepCount - ld a, [hl] - cp 4 - jr c, .skip_poison - ld [hl], 0 - - farcall DoPoisonStep - jr c, .doscript - -.skip_poison - farcall DoBikeStep - -.done - xor a - ret - -.doscript - ld a, -1 - scf - ret - -.hatch - ld a, 8 - scf - ret -; 96bd3 - -; unused -.unreferenced ; 96bd3 - ld a, 7 - scf - ret -; 96bd7 - -DoRepelStep: ; 96bd7 - ld a, [wRepelEffect] - and a - ret z - - dec a - ld [wRepelEffect], a - ret nz - - ld a, BANK(RepelWoreOffScript) - ld hl, RepelWoreOffScript - call CallScript - scf - ret -; 96beb - -DoPlayerEvent: ; 96beb - ld a, [wScriptRunning] - and a - ret z - - cp PLAYEREVENT_MAPSCRIPT ; run script - ret z - - cp NUM_PLAYER_EVENTS - ret nc - - ld c, a - ld b, 0 - ld hl, PlayerEventScriptPointers - add hl, bc - add hl, bc - add hl, bc - ld a, [hli] - ld [wScriptBank], a - ld a, [hli] - ld [wScriptPos], a - ld a, [hl] - ld [wScriptPos + 1], a - ret -; 96c0c - -PlayerEventScriptPointers: ; 96c0c - dba Invalid_0x96c2d ; 0 - dba SeenByTrainerScript ; 1 - dba TalkToTrainerScript ; 2 - dba FindItemInBallScript ; 3 - dba EdgeWarpScript ; 4 - dba WarpToNewMapScript ; 5 - dba FallIntoMapScript ; 6 - dba Script_OverworldWhiteout ; 7 - dba HatchEggScript ; 8 - dba ChangeDirectionScript ; 9 - dba Invalid_0x96c2d ; 10 -; 96c2d - -Invalid_0x96c2d: ; 96c2d - end -; 96c2e - -; unused - end -; 96c2f - -HatchEggScript: ; 96c2f - callasm OverworldHatchEgg - end -; 96c34 - -WarpToNewMapScript: ; 96c34 - warpsound - newloadmap MAPSETUP_DOOR - end -; 96c38 - -FallIntoMapScript: ; 96c38 - newloadmap MAPSETUP_FALL - playsound SFX_KINESIS - applymovement PLAYER, MovementData_0x96c48 - playsound SFX_STRENGTH - scall LandAfterPitfallScript - end -; 96c48 - -MovementData_0x96c48: ; 96c48 - skyfall - step_end -; 96c4a - -LandAfterPitfallScript: ; 96c4a - earthquake 16 - end -; 96c4d - -EdgeWarpScript: ; 4 - reloadandreturn MAPSETUP_CONNECTION -; 96c4f - -ChangeDirectionScript: ; 9 - deactivatefacing 3 - callasm EnableWildEncounters - end -; 96c56 - -INCLUDE "engine/scripting.asm" - -INCLUDE "engine/events_2.asm" |