diff options
Diffstat (limited to 'engine')
-rw-r--r-- | engine/events/shuckle.asm | 2 | ||||
-rw-r--r-- | engine/overworld/events.asm | 63 |
2 files changed, 37 insertions, 28 deletions
diff --git a/engine/events/shuckle.asm b/engine/events/shuckle.asm index 3a5f872e2..50293cdfc 100644 --- a/engine/events/shuckle.asm +++ b/engine/events/shuckle.asm @@ -71,7 +71,7 @@ SpecialShuckleOT: SpecialShuckleNick: db "SHUCKIE@" -ReturnShuckle: +ReturnShuckie: farcall SelectMonFromParty jr c, .refused diff --git a/engine/overworld/events.asm b/engine/overworld/events.asm index 257e75a15..0bdab70d2 100644 --- a/engine/overworld/events.asm +++ b/engine/overworld/events.asm @@ -8,7 +8,7 @@ OverworldLoop:: ld [wMapStatus], a .loop ld a, [wMapStatus] - ld hl, .jumps + ld hl, .Jumptable rst JumpTable ld a, [wMapStatus] cp MAPSTATUS_DONE @@ -16,7 +16,7 @@ OverworldLoop:: .done ret -.jumps +.Jumptable: ; entries correspond to MAPSTATUS_* constants dw StartMap dw EnterMap @@ -159,22 +159,22 @@ HandleMap: MapEvents: ld a, [wMapEventStatus] - ld hl, .jumps + ld hl, .Jumptable rst JumpTable ret -.jumps +.Jumptable: ; entries correspond to MAPEVENTS_* constants dw .events dw .no_events -.events +.events: call PlayerEvents call DisableEvents farcall ScriptEvents ret -.no_events +.no_events: ret MaxOverworldDelay: @@ -557,7 +557,7 @@ TryObjectEvent: ; Bug: If IsInArray returns nc, data at bc will be executed as code. push bc ld de, 3 - ld hl, .pointers + ld hl, ObjectEventTypeArray call IsInArray jr nc, .nope pop bc @@ -573,7 +573,8 @@ TryObjectEvent: xor a ret -.pointers +ObjectEventTypeArray: + table_width 3, ObjectEventTypeArray dbw OBJECTTYPE_SCRIPT, .script dbw OBJECTTYPE_ITEMBALL, .itemball dbw OBJECTTYPE_TRAINER, .trainer @@ -582,7 +583,8 @@ TryObjectEvent: dbw OBJECTTYPE_4, .four dbw OBJECTTYPE_5, .five dbw OBJECTTYPE_6, .six - db -1 + assert_table_length NUM_OBJECT_TYPES + db -1 ; end .script ld hl, MAPOBJECT_SCRIPT_POINTER @@ -638,11 +640,12 @@ TryBGEvent: .is_bg_event: ld a, [wCurBGEventType] - ld hl, .bg_events + ld hl, BGEventJumptable rst JumpTable ret -.bg_events +BGEventJumptable: + table_width 2, BGEventJumptable dw .read dw .up dw .down @@ -652,27 +655,30 @@ TryBGEvent: dw .ifnotset dw .itemifset dw .copy + assert_table_length NUM_BGEVENTS -.up +.up: ld b, OW_UP jr .checkdir -.down + +.down: ld b, OW_DOWN jr .checkdir -.right + +.right: ld b, OW_RIGHT jr .checkdir -.left + +.left: ld b, OW_LEFT jr .checkdir -.checkdir +.checkdir: ld a, [wPlayerDirection] and %1100 cp b jp nz, .dontread - -.read +.read: call PlayTalkObject ld hl, wCurBGEventScriptAddr ld a, [hli] @@ -683,7 +689,7 @@ TryBGEvent: scf ret -.itemifset +.itemifset: call CheckBGEventFlag jp nz, .dontread call PlayTalkObject @@ -697,7 +703,7 @@ TryBGEvent: scf ret -.copy +.copy: call CheckBGEventFlag jr nz, .dontread call GetMapScriptsBank @@ -706,16 +712,15 @@ TryBGEvent: call FarCopyBytes jr .dontread -.ifset +.ifset: call CheckBGEventFlag jr z, .dontread jr .thenread -.ifnotset +.ifnotset: call CheckBGEventFlag jr nz, .dontread - -.thenread +.thenread: push hl call PlayTalkObject pop hl @@ -728,7 +733,7 @@ TryBGEvent: scf ret -.dontread +.dontread: xor a ret @@ -752,13 +757,14 @@ CheckBGEventFlag: PlayerMovement: farcall DoPlayerMovement ld a, c - ld hl, .pointers + ld hl, PlayerMovementPointers rst JumpTable ld a, c ret -.pointers +PlayerMovementPointers: ; entries correspond to PLAYERMOVEMENT_* constants + table_width 2, PlayerMovementPointers dw .normal dw .warp dw .turn @@ -767,6 +773,7 @@ PlayerMovement: dw .continue dw .exit_water dw .jump + assert_table_length NUM_PLAYER_MOVEMENTS .normal: .finish: @@ -974,6 +981,7 @@ DoPlayerEvent: PlayerEventScriptPointers: ; entries correspond to PLAYEREVENT_* constants + table_width 3, PlayerEventScriptPointers dba InvalidEventScript ; PLAYEREVENT_NONE dba SeenByTrainerScript ; PLAYEREVENT_SEENBYTRAINER dba TalkToTrainerScript ; PLAYEREVENT_TALKTOTRAINER @@ -985,6 +993,7 @@ PlayerEventScriptPointers: dba HatchEggScript ; PLAYEREVENT_HATCH dba ChangeDirectionScript ; PLAYEREVENT_JOYCHANGEFACING dba InvalidEventScript ; (NUM_PLAYER_EVENTS) + assert_table_length NUM_PLAYER_EVENTS + 1 InvalidEventScript: end |