diff options
-rw-r--r-- | constants/pokemon_data_constants.asm | 4 | ||||
-rw-r--r-- | constants/script_constants.asm | 53 | ||||
-rw-r--r-- | constants/wram_constants.asm | 6 | ||||
-rw-r--r-- | data/events/special_pointers.asm | 2 | ||||
-rw-r--r-- | engine/events/shuckle.asm | 2 | ||||
-rw-r--r-- | engine/overworld/events.asm | 63 | ||||
-rw-r--r-- | maps/ManiasHouse.asm | 2 |
7 files changed, 73 insertions, 59 deletions
diff --git a/constants/pokemon_data_constants.asm b/constants/pokemon_data_constants.asm index a8612454..f9b32c27 100644 --- a/constants/pokemon_data_constants.asm +++ b/constants/pokemon_data_constants.asm @@ -96,6 +96,8 @@ MON_STATUS rb rb_skip MON_HP rw MON_MAXHP rw +MON_STATS rw NUM_BATTLE_STATS +rsset MON_STATS MON_ATK rw MON_DEF rw MON_SPD rw @@ -170,7 +172,7 @@ NUM_TREEMON_SETS EQU const_value const TREEMON_SCORE_GOOD ; 1 const TREEMON_SCORE_RARE ; 2 -; ChangeHappiness arguments (see data/happiness_changes.asm) +; ChangeHappiness arguments (see data/events/happiness_changes.asm) const_def 1 const HAPPINESS_GAINLEVEL ; 01 const HAPPINESS_USEDITEM ; 02 diff --git a/constants/script_constants.asm b/constants/script_constants.asm index 0867a528..34459a3c 100644 --- a/constants/script_constants.asm +++ b/constants/script_constants.asm @@ -66,12 +66,12 @@ STRING_BUFFER_LENGTH EQU 19 const VAR_XCOORD ; 12 const VAR_YCOORD ; 13 const VAR_SPECIALPHONECALL ; 14 -NUM_VARS EQU const_value ; 15 +NUM_VARS EQU const_value ; 15 ; variable action types -RETVAR_STRBUF2 EQU (0 << 6) -RETVAR_ADDR_DE EQU (1 << 6) -RETVAR_EXECUTE EQU (2 << 6) +RETVAR_STRBUF2 EQU 0 << 6 +RETVAR_ADDR_DE EQU 1 << 6 +RETVAR_EXECUTE EQU 2 << 6 ; PlayerEventScriptPointers indexes (see engine/overworld/events.asm) const_def -1 @@ -88,7 +88,7 @@ RETVAR_EXECUTE EQU (2 << 6) const PLAYEREVENT_JOYCHANGEFACING NUM_PLAYER_EVENTS EQU const_value -; PlayerMovement.pointers indexes (see engine/overworld/events.asm) +; PlayerMovementPointers indexes (see engine/overworld/events.asm) const_def const PLAYERMOVEMENT_NORMAL const PLAYERMOVEMENT_WARP @@ -98,17 +98,18 @@ NUM_PLAYER_EVENTS EQU const_value const PLAYERMOVEMENT_CONTINUE const PLAYERMOVEMENT_EXIT_WATER const PLAYERMOVEMENT_JUMP +NUM_PLAYER_MOVEMENTS EQU const_value ; script data sizes (see macros/scripts/maps.asm) -SCENE_SCRIPT_SIZE EQU 4 ; scene_script -CALLBACK_SIZE EQU 3 ; callback -WARP_EVENT_SIZE EQU 5 ; warp_event -COORD_EVENT_SIZE EQU 8 ; coord_event -BG_EVENT_SIZE EQU 5 ; bg_event +SCENE_SCRIPT_SIZE EQU 4 ; scene_script +CALLBACK_SIZE EQU 3 ; callback +WARP_EVENT_SIZE EQU 5 ; warp_event +COORD_EVENT_SIZE EQU 8 ; coord_event +BG_EVENT_SIZE EQU 5 ; bg_event OBJECT_EVENT_SIZE EQU 13 ; object_event ; bg_event types -; TryBGEvent arguments (see engine/overworld/events.asm) +; BGEventJumptable indexes (see engine/overworld/events.asm) const_def const BGEVENT_READ const BGEVENT_UP @@ -119,9 +120,10 @@ OBJECT_EVENT_SIZE EQU 13 ; object_event const BGEVENT_IFNOTSET const BGEVENT_ITEM const BGEVENT_COPY +NUM_BGEVENTS EQU const_value ; object_event types -; TryObjectEvent arguments (see engine/overworld/events.asm) +; ObjectEventTypeArray indexes (see engine/overworld/events.asm) const_def const OBJECTTYPE_SCRIPT const OBJECTTYPE_ITEMBALL @@ -130,6 +132,7 @@ OBJECT_EVENT_SIZE EQU 13 ; object_event const OBJECTTYPE_4 const OBJECTTYPE_5 const OBJECTTYPE_6 +NUM_OBJECT_TYPES EQU const_value ; command queue members CMDQUEUE_TYPE EQU 0 @@ -176,18 +179,18 @@ NUM_FLOORS EQU const_value ; showemote arguments ; Emotes indexes (see data/sprites/emotes.asm) const_def - const EMOTE_SHOCK ; 0 - const EMOTE_QUESTION ; 1 - const EMOTE_HAPPY ; 2 - const EMOTE_SAD ; 3 - const EMOTE_HEART ; 4 - const EMOTE_BOLT ; 5 - const EMOTE_SLEEP ; 6 - const EMOTE_FISH ; 7 - const EMOTE_SHADOW ; 8 - const EMOTE_ROD ; 9 - const EMOTE_BOULDER_DUST ; 10 - const EMOTE_GRASS_RUSTLE ; 11 + const EMOTE_SHOCK + const EMOTE_QUESTION + const EMOTE_HAPPY + const EMOTE_SAD + const EMOTE_HEART + const EMOTE_BOLT + const EMOTE_SLEEP + const EMOTE_FISH + const EMOTE_SHADOW + const EMOTE_ROD + const EMOTE_BOULDER_DUST + const EMOTE_GRASS_RUSTLE NUM_EMOTES EQU const_value EMOTE_FROM_MEM EQU -1 EMOTE_LENGTH EQU 6 @@ -256,7 +259,7 @@ NUM_DECODESCS EQU const_value const MAGIKARPLENGTH_TOO_SHORT ; 2 const MAGIKARPLENGTH_BEAT_RECORD ; 3 -; SpecialReturnShuckle return values +; ReturnShuckie return values const_def const SHUCKIE_WRONG_MON ; 0 const SHUCKIE_REFUSED ; 1 diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm index 9a44b493..69f314f0 100644 --- a/constants/wram_constants.asm +++ b/constants/wram_constants.asm @@ -28,7 +28,7 @@ GAME_TIMER_PAUSED_F EQU 0 JOYPAD_DISABLE_MON_FAINT_F EQU 6 JOYPAD_DISABLE_SGB_TRANSFER_F EQU 7 -; wOptions:: +; wOptions1:: TEXT_DELAY_MASK EQU %111 const_def 4 const NO_TEXT_SCROLL ; 4 @@ -240,8 +240,8 @@ NUM_BADGES EQU NUM_JOHTO_BADGES + NUM_KANTO_BADGES const POKEGEAR_RADIO_CARD_F ; 1 const POKEGEAR_PHONE_CARD_F ; 2 const POKEGEAR_EXPN_CARD_F ; 3 - -POKEGEAR_OBTAINED_F EQU 7 + const_skip 3 + const POKEGEAR_OBTAINED_F ; 7 ; wWhichRegisteredItem:: REGISTERED_POCKET EQU %11000000 diff --git a/data/events/special_pointers.asm b/data/events/special_pointers.asm index 4a007b12..e120ec4e 100644 --- a/data/events/special_pointers.asm +++ b/data/events/special_pointers.asm @@ -91,7 +91,7 @@ SpecialsPointers:: add_special ToggleMaptileDecorations add_special ToggleDecorationsVisibility add_special GiveShuckle - add_special ReturnShuckle + add_special ReturnShuckie add_special BillsGrandfather add_special CheckPokerus add_special DisplayCoinCaseBalance diff --git a/engine/events/shuckle.asm b/engine/events/shuckle.asm index 668a99b0..b19f4f55 100644 --- a/engine/events/shuckle.asm +++ b/engine/events/shuckle.asm @@ -67,7 +67,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 6050c44d..375dc424 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 @@ -157,22 +157,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: @@ -545,7 +545,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 @@ -561,7 +561,8 @@ TryObjectEvent: xor a ret -.pointers +ObjectEventTypeArray: + table_width 3, ObjectEventTypeArray dbw OBJECTTYPE_SCRIPT, .script dbw OBJECTTYPE_ITEMBALL, .itemball dbw OBJECTTYPE_TRAINER, .trainer @@ -570,7 +571,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 @@ -626,11 +628,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 @@ -640,27 +643,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] @@ -671,7 +677,7 @@ TryBGEvent: scf ret -.itemifset +.itemifset: call CheckBGEventFlag jp nz, .dontread call PlayTalkObject @@ -685,7 +691,7 @@ TryBGEvent: scf ret -.copy +.copy: call CheckBGEventFlag jr nz, .dontread call GetMapScriptsBank @@ -694,16 +700,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 @@ -716,7 +721,7 @@ TryBGEvent: scf ret -.dontread +.dontread: xor a ret @@ -740,13 +745,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 @@ -755,6 +761,7 @@ PlayerMovement: dw .continue dw .exit_water dw .jump + assert_table_length NUM_PLAYER_MOVEMENTS .normal: .finish: @@ -962,6 +969,7 @@ DoPlayerEvent: PlayerEventScriptPointers: ; entries correspond to PLAYEREVENT_* constants + table_width 3, PlayerEventScriptPointers dba InvalidEventScript ; PLAYEREVENT_NONE dba SeenByTrainerScript ; PLAYEREVENT_SEENBYTRAINER dba TalkToTrainerScript ; PLAYEREVENT_TALKTOTRAINER @@ -973,6 +981,7 @@ PlayerEventScriptPointers: dba HatchEggScript ; PLAYEREVENT_HATCH dba ChangeDirectionScript ; PLAYEREVENT_JOYCHANGEFACING dba InvalidEventScript ; (NUM_PLAYER_EVENTS) + assert_table_length NUM_PLAYER_EVENTS + 1 InvalidEventScript: end diff --git a/maps/ManiasHouse.asm b/maps/ManiasHouse.asm index bb6b97c9..ad8d8cf8 100644 --- a/maps/ManiasHouse.asm +++ b/maps/ManiasHouse.asm @@ -52,7 +52,7 @@ ManiaScript: writetext ManiaText_CanIHaveMyMonBack yesorno iffalse .refused - special ReturnShuckle + special ReturnShuckie ifequal SHUCKIE_WRONG_MON, .wrong ifequal SHUCKIE_REFUSED, .refused ifequal SHUCKIE_HAPPY, .superhappy |