summaryrefslogtreecommitdiff
path: root/src/engine/home.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/home.asm')
-rw-r--r--src/engine/home.asm211
1 files changed, 117 insertions, 94 deletions
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 545995a..78e0bf1 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -1552,7 +1552,7 @@ Func_08bf: ; 08bf (0:08bf)
ld [hli], a
ld [hl], b
inc hl
- ld [hli], a
+ ld [hli], a ; 0
ld [hl], $ef
ld h, b
ld l, $0
@@ -3419,6 +3419,7 @@ CreateArenaOrBenchEnergyCardList: ; 120a (0:120a)
; fill wDuelTempList with the turn holder's hand cards (their 0-59 deck indexes)
; return carry if the turn holder has no cards in hand
+; and outputs in a number of cards.
CreateHandCardList: ; 123b (0:123b)
call FindLastCardInHand
inc b
@@ -5218,7 +5219,7 @@ Func_1bca: ; 1bca (0:1bca)
ret
; 0x1c05
-; return in a the retreat cost of the turn holder's arena or benchx Pokemon
+; return in a the retreat cost of the turn holder's arena or bench Pokemon
; given the PLAY_AREA_* value in hTempPlayAreaLocation_ff9d
GetPlayAreaCardRetreatCost: ; 1c05 (0:1c05)
ldh a, [hTempPlayAreaLocation_ff9d]
@@ -8279,56 +8280,70 @@ LoadOpponentDeck: ; 2b78 (0:2b78)
ld [hl], a
ret
-Func_2bbf: ; 2bbf (0:2bbf)
- ld a, $1
- jr Func_2bdb
+AIDoAction_Turn: ; 2bbf (0:2bbf)
+ ld a, AIACTION_DO_TURN
+ jr AIDoAction
-Func_2bc3: ; 2bc3 (0:2bc3)
- ld a, $2
- jr Func_2bdb
+AIDoAction_StartDuel: ; 2bc3 (0:2bc3)
+ ld a, AIACTION_START_DUEL
+ jr AIDoAction
-Func_2bc7: ; 2bc7 (0:2bc7)
- ld a, $3
- call Func_2bdb
+AIDoAction_ForcedSwitch: ; 2bc7 (0:2bc7)
+ ld a, AIACTION_FORCED_SWITCH
+ call AIDoAction
ldh [hTempPlayAreaLocation_ff9d], a
ret
-Func_2bcf: ; 2bcf (0:2bcf)
- ld a, $4
- call Func_2bdb
+AIDoAction_KOSwitch: ; 2bcf (0:2bcf)
+ ld a, AIACTION_KO_SWITCH
+ call AIDoAction
ldh [hTemp_ffa0], a
ret
-Func_2bd7: ; 2bd7 (0:2bd7)
- ld a, $5
- jr Func_2bdb
+AIDoAction_TakePrize: ; 2bd7 (0:2bd7)
+ ld a, AIACTION_TAKE_PRIZE
+ jr AIDoAction ; this line is not needed
-Func_2bdb: ; 2bdb (0:2bdb)
+; calls the appropriate AI routine to handle action,
+; depending on the deck ID (see engine/deck_ai/deck_ai.asm)
+; input:
+; - a = AIACTION_* constant
+AIDoAction: ; 2bdb (0:2bdb)
ld c, a
+
+; load bank for Opponent Deck pointer table
ldh a, [hBankROM]
push af
- ld a, BANK(PointerTable_14000)
+ ld a, BANK(DeckAIPointerTable)
call BankswitchROM
+
+; load hl with the corresponding pointer
ld a, [wOpponentDeckID]
ld l, a
ld h, $0
- add hl, hl
- ld de, PointerTable_14000
+ add hl, hl ; two bytes per deck
+ ld de, DeckAIPointerTable
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
+
ld a, c
or a
- jr nz, .asm_2bfe
+ jr nz, .not_zero
+
+; if input was 0, copy deck data of turn player
ld e, [hl]
inc hl
ld d, [hl]
call CopyDeckData
- jr .asm_2c01
-.asm_2bfe
+ jr .done
+
+; jump to corresponding AI routine related to input
+.not_zero
call JumpToFunctionInTable
-.asm_2c01
+
+.done
ld c, a
pop af
call BankswitchROM
@@ -10800,8 +10815,8 @@ GameEvent_Credits: ; 3911 (0:3911)
ret
Func_3917: ; 3917 (0:3917)
- ld a, $22
- farcall CheckIfEventFlagSet
+ ld a, EVENT_RECEIVED_LEGENDARY_CARD
+ farcall GetEventFlagValue
call EnableSRAM
ld [s0a00a], a
call DisableSRAM
@@ -10865,7 +10880,7 @@ GetPermissionByteOfMapPosition: ; 3946 (0:3946)
Func_395a: ; 395a (0:395a)
ldh a, [hBankROM]
push af
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
call BankswitchROM
call CopyGfxData
pop af
@@ -10875,8 +10890,8 @@ Func_395a: ; 395a (0:395a)
Unknown_396b: ; 396b (0:396b)
db $00, -$01, $01, $00, $00, $01, -$01, $00
-; Movement offsets for scripted movements
-ScriptedMovementOffsetTable: ; 3973 (0:3973)
+; Movement offsets for player movements
+PlayerMovementOffsetTable: ; 3973 (0:3973)
db 0, -2 ; move 2 tiles up
db 2, 0 ; move 2 tiles right
db 0, 2 ; move 2 tiles down
@@ -10908,15 +10923,16 @@ Func_3997: ; 3997 (0:3997)
call BankswitchROM
ret
-Func_39a7: ; 39a7 (0:39a7)
- ld l, $0
- call Func_39ad
+; returns in hl a pointer to the first element for the a'th NPC
+GetLoadedNPCID: ; 39a7 (0:39a7)
+ ld l, LOADED_NPC_ID
+ call GetItemInLoadedNPCIndex
ret
-; return hl = wd34a + a * $c + l, with a < $8
-Func_39ad: ; 39ad (0:39ad)
+; return in hl a pointer to the a'th items element l
+GetItemInLoadedNPCIndex: ; 39ad (0:39ad)
push bc
- cp $8
+ cp LOADED_NPC_MAX
jr c, .asm_39b4
debug_ret
xor a
@@ -10929,36 +10945,39 @@ Func_39ad: ; 39ad (0:39ad)
add l
ld l, a
ld h, $0
- ld bc, wd34a
+ ld bc, wLoadedNPCs
add hl, bc
pop bc
ret
-Func_39c3: ; 39c3 (0:39c3)
+; Finds the index on wLoadedNPCs table of the npc in wTempNPC
+; returns it in a and puts it into wLoadedNPCTempIndex
+; c flag set if no npc found
+FindLoadedNPC: ; 39c3 (0:39c3)
push hl
push bc
push de
xor a
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ld b, a
- ld c, $8
- ld de, $000c
- ld hl, wd34a
- ld a, [wd3ab]
-.asm_39d6
+ ld c, LOADED_NPC_MAX
+ ld de, LOADED_NPC_LENGTH
+ ld hl, wLoadedNPCs
+ ld a, [wTempNPC]
+.findNPCLoop
cp [hl]
- jr z, .asm_39e1
+ jr z, .foundNPCMatch
add hl, de
inc b
dec c
- jr nz, .asm_39d6
+ jr nz, .findNPCLoop
scf
- jr z, .asm_39e6
-.asm_39e1
+ jr z, .exit
+.foundNPCMatch
ld a, b
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
or a
-.asm_39e6
+.exit
pop de
pop bc
pop hl
@@ -11055,65 +11074,68 @@ Func_3a4f: ; 3a4f (0:3a4f)
ret
; 0x3a5e
-Func_3a5e: ; 3a5e (0:3a5e)
+HandleMoveModeAPress: ; 3a5e (0:3a5e)
ldh a, [hBankROM]
push af
- ld l, $4
- call Func_3abd
- jr nc, .asm_3ab3
- ld a, BANK(Func_c653)
+ ld l, MAP_SCRIPT_OBJECTS
+ call GetMapScriptPointer
+ jr nc, .handleSecondAPressScript
+ ld a, BANK(FindPlayerMovementFromDirection)
call BankswitchROM
- call Func_c653
- ld a, $4
+ call FindPlayerMovementFromDirection
+ ld a, BANK(MapScripts)
call BankswitchROM
- ld a, [wd334]
+ ld a, [wPlayerDirection]
ld d, a
-.asm_3a79
+.findAPressMatchLoop
ld a, [hli]
bit 7, a
- jr nz, .asm_3ab3
+ jr nz, .handleSecondAPressScript
push bc
push hl
cp d
- jr nz, .asm_3aab
+ jr nz, .noMatch
ld a, [hli]
cp b
- jr nz, .asm_3aab
+ jr nz, .noMatch
ld a, [hli]
cp c
- jr nz, .asm_3aab
+ jr nz, .noMatch
ld a, [hli]
- ld [wd0c6], a
+ ld [wNextScript], a
ld a, [hli]
- ld [wd0c7], a
+ ld [wNextScript+1], a
ld a, [hli]
- ld [wd0ca], a
+ ld [wDefaultObjectText], a
ld a, [hli]
- ld [wd0cb], a
+ ld [wDefaultObjectText+1], a
ld a, [hli]
- ld [wd0c8], a
+ ld [wCurrentNPCNameTx], a
ld a, [hli]
- ld [wd0c9], a
+ ld [wCurrentNPCNameTx+1], a
pop hl
pop bc
pop af
call BankswitchROM
scf
ret
-.asm_3aab
+.noMatch
pop hl
- ld bc, $0008
+ ld bc, MAP_OBJECT_SIZE - 1
add hl, bc
pop bc
- jr .asm_3a79
-.asm_3ab3
+ jr .findAPressMatchLoop
+.handleSecondAPressScript
pop af
call BankswitchROM
- ld l, $6
- call $49c2
+ ld l, MAP_SCRIPT_PRESSED_A
+ call CallMapScriptPointerIfExists
ret
-Func_3abd: ; 3abd (0:3abd)
+; returns a map script pointer in hl given
+; current map in wCurMap and which sub-script in l
+; sets c if pointer is found
+GetMapScriptPointer: ; 3abd (0:3abd)
push bc
push hl
ld a, [wCurMap]
@@ -11152,9 +11174,9 @@ Func_3ae8: ; 3ae8 (0:3ae8)
ret
; 0x3aed
-; finds an OWScript from the first byte and puts the next two bytes (usually arguments?) into cb
+; finds a Script from the first byte and puts the next two bytes (usually arguments?) into cb
RunOverworldScript: ; 3aed (0:3aed)
- ld hl, wOWScriptPointer
+ ld hl, wScriptPointer
ld a, [hli]
ld h, [hl]
ld l, a
@@ -11321,7 +11343,7 @@ ResetDoFrameFunction: ; 3bdb (0:3bdb)
Func_3be4: ; 3be4 (0:3be4)
ldh a, [hBankROM]
push af
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
call BankswitchROM
call Func_08de
pop af
@@ -11329,15 +11351,16 @@ Func_3be4: ; 3be4 (0:3be4)
ret
; 0x3bf5
-Func_3bf5: ; 3bf5 (0:3bf5)
+; Copies bc bytes from [wTempPointer] to de
+CopyBankedDataToDE: ; 3bf5 (0:3bf5)
ldh a, [hBankROM]
push af
push hl
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
call BankswitchROM
- ld a, [wd4c4]
+ ld a, [wTempPointer]
ld l, a
- ld a, [wd4c5]
+ ld a, [wTempPointer + 1]
ld h, a
call CopyDataHLtoDE_SaveRegisters
pop hl
@@ -11407,9 +11430,8 @@ CallHL2: ; 3c45 (0:3c45)
jp hl
; 0x3c46
-PushBC_Ret: ; 3c46 (0:3c46)
- push bc
- ret
+CallBC: ; 3c46 (0:3c46)
+ retbc
; 0x3c48
DoFrameIfLCDEnabled: ; 3c48 (0:3c48)
@@ -11460,7 +11482,7 @@ DivideBCbyDE: ; 3c5a (0:3c5a)
jr nz, .asm_3c63
ret
-Func_3c83: ; 3c83 (0:3c83)
+CallPlaySong: ; 3c83 (0:3c83)
call PlaySong
ret
; 0x3c87
@@ -11470,18 +11492,19 @@ Func_3c87: ; 3c87 (0:3c87)
call PauseSong
pop af
call PlaySong
- call Func_3c96
+ call WaitForSongToFinish
call ResumeSong
ret
; 0x3c96
-Func_3c96: ; 3c96 (0:3c96)
+WaitForSongToFinish: ; 3c96 (0:3c96)
call DoFrameIfLCDEnabled
call AssertSongFinished
or a
- jr nz, Func_3c96
+ jr nz, WaitForSongToFinish
ret
+; clear [SOMETHING] - something relating to animations
Func_3ca0: ; 3ca0 (0:3ca0)
xor a
ld [wd5d7], a
@@ -11634,11 +11657,11 @@ Func_3d72: ; 3d72 (0:3d72)
xor a
jr .asm_3da1
.asm_3d84
- ld a, [wd4c4]
+ ld a, [wTempPointer]
ld l, a
- ld a, [wd4c5]
+ ld a, [wTempPointer + 1]
ld h, a
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
call BankswitchROM
ld a, [hli]
push af
@@ -11669,7 +11692,7 @@ Func_3d72: ; 3d72 (0:3d72)
call BankswitchROM
ret
-Func_3db7: ; 3db7 (0:3db7)
+GetFirstSpriteAnimBufferProperty: ; 3db7 (0:3db7)
push bc
ld c, SPRITE_ANIM_FIELD_00
call GetSpriteAnimBufferProperty