summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--constants/pokemon_data_constants.asm4
-rw-r--r--constants/script_constants.asm53
-rw-r--r--constants/wram_constants.asm6
-rw-r--r--data/events/special_pointers.asm2
-rw-r--r--engine/events/shuckle.asm2
-rw-r--r--engine/overworld/events.asm63
-rw-r--r--maps/ManiasHouse.asm2
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