diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/bank1.asm | 47 | ||||
-rw-r--r-- | src/engine/bank2.asm | 20 | ||||
-rw-r--r-- | src/engine/bank20.asm | 8 | ||||
-rw-r--r-- | src/engine/bank3.asm | 20 | ||||
-rw-r--r-- | src/engine/bank4.asm | 46 | ||||
-rw-r--r-- | src/engine/bank5.asm | 32 | ||||
-rw-r--r-- | src/engine/bank6.asm | 10 | ||||
-rw-r--r-- | src/engine/bank7.asm | 10 | ||||
-rw-r--r-- | src/engine/bank8.asm | 4 | ||||
-rw-r--r-- | src/engine/home.asm | 291 | ||||
-rw-r--r-- | src/macros/code.asm | 9 | ||||
-rw-r--r-- | src/wram.asm | 32 |
12 files changed, 323 insertions, 206 deletions
diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm index 79a242d..181597b 100644 --- a/src/engine/bank1.asm +++ b/src/engine/bank1.asm @@ -59,7 +59,10 @@ Func_406f: ; 406f (1:406f) call Func_420b call $66e9 ldtx hl, BackUpIsBrokenText - jr c, .asm_4097 + jr c, Func_4097 +; fallthrough + +Func_407a: ; 407a (1:407a) ld hl, sp+$00 ld a, l ld [wcbe5], a @@ -72,7 +75,9 @@ Func_406f: ; 406f (1:406f) ld [wDuelFinished], a call DuelMainScene jp StartDuel.asm_40fb -.asm_4097 +; 0x4097 + +Func_4097: ; 4097 (1:4097) call DrawWideTextBox_WaitForInput call ResetSerial scf @@ -473,7 +478,7 @@ Func_4376: ; 4376 (1:4376) cp -1 ret z call GetCardIDFromDeckIndex - call LoadCardDataToBuffer1 + call LoadCardDataToBuffer1_FromCardID ld hl, wcbc9 xor a ld [hli], a @@ -661,7 +666,7 @@ DuelMenu_Attack: ; 46fc (1:46fc) ld h, a ld l, DUELVARS_ARENA_CARD ld a, [hl] - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex .wait_for_input call DoFrame @@ -781,7 +786,7 @@ Func_47fd: ; $47fd (1:47fd) jr Func_481b Func_4802: ; $4802 (1:4802) - ld hl, $cc38 + ld hl, wLoadedCard1Move1Description + 2 ld a, [hli] or [hl] ret z @@ -793,14 +798,14 @@ Func_480d: ; $480d (1:480d) jr Func_481b Func_4812: ; $4812 (1:4812) - ld hl, $cc4b + ld hl, wLoadedCard1Move2Description + 2 ld a, [hli] or [hl] ret z call $5d37 Func_481b: ; $481b (1:481b) - ld hl, $cc04 + ld hl, wcc04 ld a, $01 xor [hl] ld [hl], a @@ -814,7 +819,7 @@ LoadPokemonMovesToDuelCardOrAttackList: ; 4823 (1:4823) ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable ldh [hTempCardIndex_ff98], a - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld c, $00 ld b, $0d ld hl, wDuelCardOrAttackList @@ -920,7 +925,7 @@ CheckIfEnoughEnergies: ; 488f (1:488f) _CheckIfEnoughEnergies: ; 48ac (1:48ac) push de ld a, d - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex pop bc push bc ld de, wLoadedCard1Move1Energy @@ -1097,8 +1102,8 @@ Func_4b60: ; 4b60 (1:4b60) call Func_0f58 ld a, [wcc08] ld l, a - ld h, $0 - call Func_2ec4 + ld h, 0 + call LoadTxRam3 ldtx hl, PleasePlacePrizesText call DrawWideTextBox_PrintText call EnableLCD @@ -1118,10 +1123,10 @@ Func_4b60: ; 4b60 (1:4b60) ldh a, [hWhoseTurn] cp PLAYER_TURN jr nz, .asm_4c52 - ld de, wc590 - call PrintPlayerName + ld de, wDefaultText + call LoadPlayerName ld hl, $0000 - call Func_2ebb + call LoadTxRam2 ldtx hl, YouPlayFirstText ldtx de, IfHeadPlayerPlaysFirstText call TossCoin @@ -1136,10 +1141,10 @@ Func_4b60: ; 4b60 (1:4b60) ret .asm_4c52 - ld de, wc590 - call PrintOpponentName + ld de, wDefaultText + call LoadOpponentName ld hl, $0000 - call Func_2ebb + call LoadTxRam2 ldtx hl, YouPlaySecondText ldtx de, IfHeadPlayerPlaysFirstText call TossCoin @@ -1209,7 +1214,7 @@ Func_4cd5: ; 4cd5 (1:4cd5) call $5502 jr c, .asm_4d28 ldh a, [hTempCardIndex_ff98] - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld a, $2 call $51e7 jr c, .asm_4d28 @@ -1375,7 +1380,7 @@ AIUseEnergyCard: ; 69a5 (1:69a5) ldh [hTempCardIndex_ff98], a call PutHandCardInPlayArea ldh a, [hffa0] - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex call $5e75 call $68e4 ld a, $1 @@ -1693,7 +1698,7 @@ Func_7571: ; 7571 (1:7571) INCROM $7571, $7576 Func_7576: ; 7576 (1:7576) - farcallx $6, $591f + farcall $6, $591f ret ; 0x757b @@ -1703,7 +1708,7 @@ Func_758f: ; 758f (1:758f) INCROM $758f, $7594 Func_7594: ; 7594 (1:7594) - farcallx $6, $661f + farcall $6, $661f ret ; 0x7599 diff --git a/src/engine/bank2.asm b/src/engine/bank2.asm index 479eb77..36c76f5 100644 --- a/src/engine/bank2.asm +++ b/src/engine/bank2.asm @@ -267,7 +267,7 @@ Func_8f38: ; 8f38 (2:4f38) ld h, [hl] call DisableSRAM ld l, a - ld de, wc590 + ld de, wDefaultText call Func_0663 ld hl, $cfb9 ld [hl], $6 @@ -346,8 +346,8 @@ Func_8f9d: ; 8f9d (2:4f9d) call Func_9253 call DisableSRAM xor a - ld [wce3f], a - ld [wce40], a + ld [wTxRam2], a + ld [wTxRam2 + 1], a ldtx hl, ChosenAsDuelingDeckText call DrawWideTextBox_WaitForInput ld a, [wceb1] @@ -665,12 +665,12 @@ Unknown_9242: ; 9242 (2:5242) INCROM $9242, $9253 Func_9253: ; 9253 (2:5253) - ld de, wc590 + ld de, wDefaultText call Func_92ad - ld hl, wc590 + ld hl, wDefaultText call Func_23c1 ld b, $0 - ld hl, wc590 + ld hl, wDefaultText add hl, bc ld d, h ld e, l @@ -684,19 +684,19 @@ Func_926e: ; 926e (2:526e) pop hl jr c, .asm_929c push de - ld de, wc590 + ld de, wDefaultText call Func_92b4 - ld hl, wc590 + ld hl, wDefaultText call Func_23c1 ld b, $0 - ld hl, wc590 + ld hl, wDefaultText add hl, bc ld d, h ld e, l ld hl, Unknown_92a7 call Func_92ad pop de - ld hl, wc590 + ld hl, wDefaultText call Func_22ae call Func_21c5 or a diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm index e0ed703..c21deca 100644 --- a/src/engine/bank20.asm +++ b/src/engine/bank20.asm @@ -5,9 +5,9 @@ Func_80028: ; 80028 (20:4028) call Func_801f1 ld bc, $0000 call Func_80077 - farcallx $3, $49c7 + farcall $3, $49c7 call $41a1 - farcallx $3, $43ee + farcall $3, $43ee ret ; 0x8003d @@ -296,7 +296,7 @@ Func_80ba4: ; 80ba4 (20:4ba4) ld a, [hl] ld [wd131], a push bc - farcallx $20, $4082 + farcall $20, $4082 pop bc srl b ld a, c @@ -308,7 +308,7 @@ Func_80ba4: ; 80ba4 (20:4ba4) ld b, $0 ld hl, wBoosterViableCardList add hl, bc - farcallx $3, $438f + farcall $3, $438f pop af ld [$d23b], a pop af diff --git a/src/engine/bank3.asm b/src/engine/bank3.asm index df4a1d5..5400212 100644 --- a/src/engine/bank3.asm +++ b/src/engine/bank3.asm @@ -1524,15 +1524,15 @@ Func_cad8: ; cad8 (3:4ad8) .asm_caff ld a, $c - farcallx $4, $4a70 + farcall $4, $4a70 .asm_cb05 ld a, $b - farcallx $4, $4a70 + farcall $4, $4a70 .asm_cb0b ld a, $a - farcallx $4, $4a70 + farcall $4, $4a70 .asm_cb11 pop af @@ -2212,7 +2212,7 @@ Func_cfd4: ; cfd4 (3:4fd4) Func_d00b: ; d00b (3:500b) sla c ld b, $0 - ld hl, wce3f + ld hl, wTxRam2 add hl, bc push hl call Func_ca69 @@ -2387,7 +2387,7 @@ Func_d125: ; d125 (3:5125) Func_d135: ; d135 (3:5135) sla c ld b, $0 - ld hl, wce3f + ld hl, wTxRam2 add hl, bc push hl ld a, [wd32e] @@ -2415,7 +2415,7 @@ Func_d16b: ; d16b (3:516b) push de sla c ld b, $0 - ld hl, wce3f + ld hl, wTxRam2 add hl, bc push hl ld a, [$d696] @@ -2472,9 +2472,9 @@ asm_d1c6 ld a, [hli] ld [$d697], a ld a, [hli] - ld [wce3f], a + ld [wTxRam2], a ld a, [hl] - ld [wce40], a + ld [wTxRam2 + 1], a jp IncreaseOWScriptPointerBy1 INCROM $d1dc, $d209 @@ -2607,9 +2607,9 @@ Func_d28c: ; d28c (3:528c) jr z, .asm_d2f5 add hl, bc ld a, [hli] - ld [wce3f], a + ld [wTxRam2], a ld a, [hl] - ld [wce40], a + ld [wTxRam2 + 1], a .asm_d2f5 ret diff --git a/src/engine/bank4.asm b/src/engine/bank4.asm index dca50a9..f6452c5 100644 --- a/src/engine/bank4.asm +++ b/src/engine/bank4.asm @@ -71,9 +71,9 @@ Medal_1029e: ; 1029e (4:429e) ld hl, Unknown_1030b add hl, bc ld a, [hli] - ld [wce3f], a + ld [wTxRam2], a ld a, [hl] - ld [wce40], a + ld [wTxRam2 + 1], a call $4031 ld a, MUSIC_MEDAL call PlaySong @@ -128,13 +128,13 @@ BoosterPack_1031b: ; 1031b (4:431b) call $70ca pop hl ld a, [hli] - ld [wce43], a + ld [wTxRam3], a xor a - ld [wce44], a + ld [wTxRam3 + 1], a ld a, [hli] - ld [wce3f], a + ld [wTxRam2], a ld a, [hl] - ld [wce40], a + ld [wTxRam2 + 1], a call $4031 call PauseSong ld a, MUSIC_BOOSTER_PACK @@ -160,7 +160,7 @@ BoosterPack_1031b: ; 1031b (4:431b) ld [wVBlankOAMCopyToggle], a ld a, $4 ld [wFrameType], a - farcallx $1, $7599 + farcall $1, $7599 farcall Func_c1a4 call DoFrameIfLCDEnabled pop af @@ -191,22 +191,22 @@ Duel_Init: ; 103d3 (4:43d3) ld hl, $445b add hl, bc ld a, [hli] - ld [wce3f], a + ld [wTxRam2], a ld a, [hli] - ld [wce40], a + ld [wTxRam2 + 1], a push hl ld a, [wOpponentName] - ld [wce41], a + ld [wTxRam2_b], a ld a, [wOpponentName + 1] - ld [wce42], a + ld [wTxRam2_b + 1], a ld hl, $4451 call $51b3 ; LoadDuelistName pop hl ld a, [hli] - ld [wce3f], a + ld [wTxRam2], a ld c, a ld a, [hli] - ld [wce40], a + ld [wTxRam2 + 1], a or c jr z, .asm_10425 ld hl, $4456 @@ -798,7 +798,10 @@ Func_1124d: ; 1124d (4:524d) INCROM $1124d, $11320 Func_11320: ; 11320 (4:5320) - INCROM $11320, $11416 + INCROM $11320, $11343 + +Func_11343: ; 11343 (4:5343) + INCROM $11343, $11416 Func_11416: ; 11416 (4:5416) INCROM $11416, $11430 @@ -830,7 +833,7 @@ Func_1157c: ; 1157c (4:557c) ret ; 0x115a3 - +Func_115a3: ; 115a3 (4:55a3) INCROM $115a3, $1162a INCLUDE "data/map_scripts.asm" @@ -960,6 +963,7 @@ Func_118d3: ; 118d3 (4:58d3) INCLUDE "data/npcs.asm" +Func_11f4e: ; 11f4e (4:5f4e) INCROM $11f4e, $1217b OverworldScriptTable: ; 1217b (4:617b) @@ -1119,7 +1123,7 @@ Func_12704: ; 12704 (4:6704) farcall Func_1d306 ld a, $0 ld [wd0b5], a - farcallx $03, Func_383d + farcall $03, Func_383d or a ret @@ -1136,7 +1140,7 @@ Func_12741: ; 12741 (4:6741) call DisableSRAM ld a, $0 ld [wd0b5], a - farcallx $03, Func_383d + farcall $03, Func_383d or a ret @@ -1155,11 +1159,11 @@ Func_1277e: ; 1277e (4:677e) ld a, MUSIC_STOP call PlaySong farcall Func_c9cb - farcallx $04, Func_3a40 + farcall $04, Func_3a40 farcall Func_70000 ld a, $5 ld [wd0b5], a - farcallx $03, Func_383d + farcall $03, Func_383d or a ret ; 0x1279a @@ -1517,9 +1521,9 @@ Func_13485: ; 13485 (4:7485) or a ret z ld a, [$ba56] - ld [wce43], a + ld [wTxRam3], a ld a, [$ba57] - ld [wce44], a + ld [wTxRam3 + 1], a call DisableSRAM call PauseSong ld a, MUSIC_MEDAL diff --git a/src/engine/bank5.asm b/src/engine/bank5.asm index 79a5dd2..a35081d 100644 --- a/src/engine/bank5.asm +++ b/src/engine/bank5.asm @@ -64,7 +64,7 @@ Func_14226: ; 14226 (5:4226) ldh [hTempCardIndex_ff98], a cp $ff ret z - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld a, [wLoadedCard1Type] cp TYPE_ENERGY_FIRE jr nc, .check_for_next_pokemon @@ -121,13 +121,13 @@ Func_1468b: ; 1468b (5:468b) call Func_15649 ld a, $1 call Func_14663 - farcallx $8, $67d3 + farcall $8, $67d3 jp nc, $4776 - farcallx $8, $6790 - farcallx $8, $66a3 - farcallx $8, $637f + farcall $8, $6790 + farcall $8, $66a3 + farcall $8, $637f ret c - farcallx $8, $662d + farcall $8, $662d ld a, $2 call Func_14663 ld a, $3 @@ -158,12 +158,12 @@ Func_1468b: ; 1468b (5:468b) .asm_146ed call $5eae - farcallx $8, $66a3 - farcallx $8, $637f + farcall $8, $66a3 + farcall $8, $637f ret c - farcallx $8, $6790 + farcall $8, $6790 ld a, $d - farcallx $8, $619b + farcall $8, $619b ld a, $d call Func_14663 ld a, $f @@ -203,18 +203,18 @@ Func_1468b: ; 1468b (5:468b) .asm_1475b call $5eae - farcallx $8, $66a3 - farcallx $8, $637f + farcall $8, $66a3 + farcall $8, $637f ret c - farcallx $8, $6790 + farcall $8, $6790 ld a, $d - farcallx $8, $619b + farcall $8, $619b ld a, $d call Func_14663 .asm_14776 ld a, $e - farcallx $8, $619b + farcall $8, $619b call $69f8 ret c ld a, $5 @@ -272,7 +272,7 @@ Func_15649: ; 15649 (5:5649) ld a, e cp MEWTWO1 jr nz, .asm_156a4 - farcallx $8, $67a9 + farcall $8, $67a9 jr nc, .asm_156aa .asm_156a4 diff --git a/src/engine/bank6.asm b/src/engine/bank6.asm index fa1c529..f8e8e65 100644 --- a/src/engine/bank6.asm +++ b/src/engine/bank6.asm @@ -71,7 +71,7 @@ Func_199e0: ; 199e0 (6:59e0) pop hl call EnableSRAM push hl - ld de, wc590 + ld de, wDefaultText .asm_199f3 ld a, [de] inc de @@ -103,7 +103,7 @@ Func_19a12: ; 19a12 (6:5a12) ld a, [hli] ld h, [hl] ld l, a - ld de, wc590 + ld de, wDefaultText call PrintTextBoxBorderLabel ret ; 0x19a1f @@ -145,15 +145,15 @@ Func_1a61f: ; 1a61f (6:661f) push hl ld e, a ld d, $0 - call LoadCardDataToBuffer1 + call LoadCardDataToBuffer1_FromCardID call PauseSong ld a, MUSIC_MEDAL call PlaySong - ld hl, $cc27 + ld hl, wLoadedCard1Name ld a, [hli] ld h, [hl] ld l, a - bank1call Func_2ebb ; switch to bank 1, but call a home func + bank1call LoadTxRam2 ; switch to bank 1, but call a home func ld a, PLAYER_TURN ldh [hWhoseTurn], a pop hl diff --git a/src/engine/bank7.asm b/src/engine/bank7.asm index 1423278..3ca0d2d 100644 --- a/src/engine/bank7.asm +++ b/src/engine/bank7.asm @@ -148,7 +148,7 @@ Func_1c50a: ; 1c50a (7:450a) xor a ld [hli], a ld a, [hl] - farcallx $4, $69fd + farcall $4, $69fd ld hl, $d349 dec [hl] @@ -442,7 +442,7 @@ Func_1d11c: ; 1d11c (7:511c) ld a, MUSIC_PC_MAIN_MENU call PlaySong call DisableLCD - farcallx $4, $4000 + farcall $4, $4000 ld de, $308f call Func_2275 call Func_3ca0 @@ -462,7 +462,7 @@ Func_1d11c: ; 1d11c (7:511c) .asm_1d14f ld hl, $d636 farcall Func_111e9 - farcallx $4, $4031 + farcall $4, $4031 .asm_1d15a call DoFrameIfLCDEnabled call UpdateRNGSources @@ -536,7 +536,7 @@ Credits_1d6ad: ; 1d6ad (7:56ad) ld [wd324], a ld a, MUSIC_CREDITS call PlaySong - farcallx $4, $4031 + farcall $4, $4031 call $57fc .asm_1d6c8 call DoFrameIfLCDEnabled @@ -547,7 +547,7 @@ Credits_1d6ad: ; 1d6ad (7:56ad) jr nz, .asm_1d6c8 call Func_3c96 ld a, $8 - farcallx $4, $6863 + farcall $4, $6863 ld a, MUSIC_STOP call PlaySong farcall Func_10ab4 diff --git a/src/engine/bank8.asm b/src/engine/bank8.asm index 413061c..487814f 100644 --- a/src/engine/bank8.asm +++ b/src/engine/bank8.asm @@ -28,7 +28,7 @@ Func_200e5: ; 200e5 (8:40e5) ld a, [hli] ld [$ce17], a ld a, [$ce16] - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex cp $d2 jr nz, .asm_2012b ld b, a @@ -52,7 +52,7 @@ Func_200e5: ; 200e5 (8:40e5) ld a, $1 call TryExecuteEffectCommandFunction jp c, $41a8 - farcallx $5, $743b + farcall $5, $743b jr c, .asm_201a8 pop de pop hl diff --git a/src/engine/home.asm b/src/engine/home.asm index 2365c52..6c134eb 100644 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -2455,8 +2455,8 @@ Func_0ed5: ; 0ed5 (0:0ed5) DuelTransmissionError: ; 0f35 (0:0f35) ld a, [wSerialFlags] ld l, a - ld h, $0 - call Func_2ec4 + ld h, 0 + call LoadTxRam3 ldtx hl, TransmissionErrorText call DrawWideTextBox_WaitForInput ld a, $ff @@ -3054,7 +3054,7 @@ CreateArenaOrBenchEnergyCardList: ; 120a (0:120a) cp c jr nz, .skip_card ; jump if not in specified play area location ld a, l - call LoadDeckCardToBuffer2 + call LoadCardDataToBuffer2_FromDeckIndex ld a, [wLoadedCard2Type] and 1 << TYPE_ENERGY_F jr z, .skip_card ; jump if Pokemon or trainer card @@ -3262,13 +3262,13 @@ _GetCardIDFromDeckIndex: ; 1362 (0:1362) ret ; load data of card with deck index a (0-59) to wLoadedCard1 -LoadDeckCardToBuffer1: ; 1376 (0:1376) +LoadCardDataToBuffer1_FromDeckIndex: ; 1376 (0:1376) push hl push de push bc push af call GetCardIDFromDeckIndex - call LoadCardDataToBuffer1 + call LoadCardDataToBuffer1_FromCardID pop af ld hl, wLoadedCard1 bank1call ConvertTrainerCardToPokemon @@ -3279,13 +3279,13 @@ LoadDeckCardToBuffer1: ; 1376 (0:1376) ret ; load data of card with deck index a (0-59) to wLoadedCard2 -LoadDeckCardToBuffer2: ; 138c (0:138c) +LoadCardDataToBuffer2_FromDeckIndex: ; 138c (0:138c) push hl push de push bc push af call GetCardIDFromDeckIndex - call LoadCardDataToBuffer2 + call LoadCardDataToBuffer2_FromCardID pop af ld hl, wLoadedCard2 bank1call ConvertTrainerCardToPokemon @@ -3352,7 +3352,7 @@ PutHandPokemonCardInPlayArea: ; 1485 (0:1485) ld l, a pop af ld [hl], a ; set card in arena or benchx - call LoadDeckCardToBuffer2 + call LoadCardDataToBuffer2_FromDeckIndex ld a, DUELVARS_ARENA_CARD_HP add e ld l, a @@ -3595,7 +3595,7 @@ GetAttachedEnergies: ; 159f (0:159f) push de push bc ld a, l - call LoadDeckCardToBuffer2 + call LoadCardDataToBuffer2_FromDeckIndex ld a, [wLoadedCard2Type] bit TYPE_ENERGY_F, a jr z, .not_an_energy_card @@ -3703,12 +3703,12 @@ Func_161e: ; 161e (0:161e) ret nz call $6510 ldh a, [hTempCardIndex_ff98] - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld hl, wLoadedCard1Name ld a, [hli] ld h, [hl] ld l, a - call Func_2ebb + call LoadTxRam2 ldtx hl, HavePokemonPowerText call DrawWideTextBox_WaitForInput call Func_0f58 @@ -3734,9 +3734,9 @@ Func_161e: ; 161e (0:161e) ret c ; return if command not found bank1call $4f9d ldh a, [hTempCardIndex_ff9f] - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld de, wLoadedCard1Name - ld hl, wce3f + ld hl, wTxRam2 ld a, [de] inc de ld [hli], a @@ -3767,7 +3767,7 @@ Func_16ad: ; 16ad (0:16ad) pop af ld e, a ld d, $00 - call LoadCardDataToBuffer1 + call LoadCardDataToBuffer1_FromCardID pop de jr CopyMoveDataAndDamage.card_loaded @@ -3779,7 +3779,7 @@ CopyMoveDataAndDamage: ; 16c0 (0:16c0) ld [wSelectedMoveIndex], a ld a, d ldh [hTempCardIndex_ff9f], a - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex .card_loaded ld a, [wLoadedCard1ID] ld [wTempCardID_ccc2], a @@ -3912,7 +3912,7 @@ Func_1730: ; 1730 (0:1730) bank1call $503a pop hl .asm_17e8 - call Func_1ad0 + call PrintKnockedOutIfHLZero jr Func_17fb Func_17ed: ; 17ed (0:17ed) @@ -4070,13 +4070,52 @@ CheckSelfConfusionDamage: ; 18d7 (0:18d7) ret ; 0x18f9 - INCROM $18f9, $1944 +; use the trainer card with deck index at hTempCardIndex_ff98 +; a trainer card is like a move effect, with its own effect commands +UseTrainerCard: ; 18f9 (0:18f9) + call CheckCantUseTrainerDueToHeadache + jr c, .cant_use + ldh a, [hWhoseTurn] + ld h, a + ldh a, [hTempCardIndex_ff98] + ldh [hTempCardIndex_ff9f], a + call LoadNonPokemonCardEffectCommands + ld a, $01 + call TryExecuteEffectCommandFunction + jr nc, .can_use +.cant_use + call DrawWideTextBox_WaitForInput + scf + ret +.can_use + ld a, $02 + call TryExecuteEffectCommandFunction + jr c, .done + ld a, $06 + call SetDuelAIAction + call $666a + call Func_0f58 + ld a, $06 + call TryExecuteEffectCommandFunction + ld a, $05 + call TryExecuteEffectCommandFunction + ld a, $07 + call SetDuelAIAction + ld a, $03 + call TryExecuteEffectCommandFunction + ldh a, [hTempCardIndex_ff9f] + call MoveHandCardToDiscardPile + call Func_0f58 +.done + or a + ret +; 0x1944 ; loads the effect commands of a (trainer or energy) card with deck index (0-59) at hTempCardIndex_ff9f ; into wLoadedMoveEffectCommands LoadNonPokemonCardEffectCommands: ; 1944 (0:1944) ldh a, [hTempCardIndex_ff9f] - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld hl, wLoadedCard1EffectCommands ld de, wLoadedMoveEffectCommands ld a, [hli] @@ -4113,7 +4152,7 @@ Func_195c: ; 195c (0:195c) ld a, DUELVARS_ARENA_CARD_HP call GetTurnDuelistVariable bank1call $7469 - call Func_1ad0 + call PrintKnockedOutIfHLZero pop af ld [wTempNonTurnDuelistCardID], a pop af @@ -4188,17 +4227,17 @@ Func_1994: ; 1994 (0:1994) Func_1a0e: ; 1a0e (0:1a0e) push hl - add $1a + add LOW(.asm_1a1a) ld l, a - ld a, $1a + ld a, HIGH(.asm_1a1a) adc $0 ld h, a ld a, [hl] pop hl ret -; 0x1a1a - INCROM $1a1a, $1a22 +.asm_1a1a + db $80, $40, $20, $10, $08, $04, $02, $01 Func_1a22: ; 1a22 (0:1a22) xor a @@ -4299,39 +4338,44 @@ SubstractHP: ; 1a96 (0:1a96) pop hl ret -Func_1aac: ; 1aac (0:1aac) +; given a play area location offset in a, check if the turn holder's Pokemon card in +; that location has no HP left, and, if so, print that it was knocked out. +PrintPlayAreaCardKnockedOutIfNoHP: ; 1aac (0:1aac) ld e, a add DUELVARS_ARENA_CARD_HP call GetTurnDuelistVariable or a - ret nz + ret nz ; return if arena card has non-0 HP ld a, [wTempNonTurnDuelistCardID] push af ld a, e add DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld a, [wLoadedCard1ID] ld [wTempNonTurnDuelistCardID], a - call Func_1ad3 + call PrintKnockedOut pop af ld [wTempNonTurnDuelistCardID], a scf ret -Func_1ad0: ; 1ad0 (0:1ad0) - ld a, [hl] +PrintKnockedOutIfHLZero: ; 1ad0 (0:1ad0) + ld a, [hl] ; this is supposed to point to a remaining HP value after some form of damage calculation or a ret nz -Func_1ad3: ; 1ad3 (0:1ad3) +; fallthrough + +; print in a text box that the Pokemon card at wTempNonTurnDuelistCardID was knocked out and wait 40 frames +PrintKnockedOut: ; 1ad3 (0:1ad3) ld a, [wTempNonTurnDuelistCardID] ld e, a - call LoadCardDataToBuffer1 - ld hl, $cc27 + call LoadCardDataToBuffer1_FromCardID + ld hl, wLoadedCard1Name ld a, [hli] ld h, [hl] ld l, a - call Func_2ebb + call LoadTxRam2 ldtx hl, WasKnockedOutText call DrawWideTextBox_PrintText ld a, 40 @@ -4349,16 +4393,16 @@ Func_1b8d: ; 1b8d (0:1b8d) bank1call $4f9d ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld a, $12 call Func_29f5 ld [hl], $0 - ld hl, $ce3f + ld hl, wTxRam2 xor a ld [hli], a ld [hli], a ld a, [wLoadedMoveName] - ld [hli], a + ld [hli], a ; wTxRam2_b ld a, [wLoadedMoveName + 1] ld [hli], a ldtx hl, PokemonsAttackText ; text when using an attack @@ -4385,14 +4429,14 @@ Func_1bca: ; 1bca (0:1bca) ldh a, [hTempPlayAreaLocationOffset_ff9d] add DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call LoadDeckCardToBuffer1 + call LoadCardDataToBuffer1_FromDeckIndex ld a, $12 call Func_29f5 ld [hl], $0 ld hl, $0000 - call Func_2ebb + call LoadTxRam2 ld hl, $ccaa - ld de, $ce41 + ld de, wTxRam2_b ld a, [hli] ld [de], a inc de @@ -4425,7 +4469,7 @@ SwapTurn: ; 1c72 (0:1c72) pop af ret -PrintPlayerName: ; 1c7d (0:1c7d) +LoadPlayerName: ; 1c7d (0:1c7d) call EnableSRAM ld hl, $a010 .loop @@ -4438,7 +4482,7 @@ PrintPlayerName: ; 1c7d (0:1c7d) call DisableSRAM ret -PrintOpponentName: ; 1c8e (0:1c8e) +LoadOpponentName: ; 1c8e (0:1c8e) ld hl, wOpponentName ld a, [hli] or [hl] @@ -4452,7 +4496,7 @@ PrintOpponentName: ; 1c8e (0:1c8e) ld a, [hl] or a jr z, .print_player2 - jr PrintPlayerName.loop + jr LoadPlayerName.loop .print_player2 ldtx hl, Player2Text jp PrintTextBoxBorderLabel @@ -6084,7 +6128,7 @@ CardSymbolTable: db $dc, $02 ; TYPE_TRAINER Func_29f5: ; 29f5 (0:29f5) - farcallx $6, $4000 + farcall $6, $4000 ret ; 0x29fa @@ -6151,7 +6195,7 @@ Func_2a44: ; 2a44 (0:2a44) ld a, l or h jp nz, PrintTextNoDelay - ld hl, wc590 + ld hl, wDefaultText jp Func_21c5 DrawWideTextBox_PrintText: ; 2a59 (0:2a59) @@ -6325,7 +6369,11 @@ PrintYesOrNoItems: ; 2b66 (0:2b66) ret ; 0x2b70 - INCROM $2b70, $2b78 +Func_2b70: ; 2b70 (0:2b70) + ld a, BANK(Func_407a) + call BankswitchHome + jp Func_407a +; 0x2b78 ; loads opponent deck to wOpponentDeck LoadOpponentDeck: ; 2b78 (0:2b78) @@ -6572,7 +6620,7 @@ Func_2d06: ; 2d06 (0:2d06) add e ld e, a ld d, $0 - ld hl, $ce2b + ld hl, wce2b add hl, de ret @@ -6613,11 +6661,11 @@ Func_2d43: ; 2d43 (0:2d43) call Func_21f2 jr nc, .asm_2d74 cp TX_RAM1 - jr z, .asm_2dc8 + jr z, .tx_ram1 cp TX_RAM2 - jr z, .asm_2d8a + jr z, .tx_ram2 cp TX_RAM3 - jr z, .asm_2db3 + jr z, .tx_ram3 jr .asm_2d74 .asm_2d65 ld e, a @@ -6644,13 +6692,13 @@ Func_2d43: ; 2d43 (0:2d43) call Func_230f scf ret -.asm_2d8a +.tx_ram2 call Func_2ceb ld a, $f ld [hffaf], a xor a ld [wcd0a], a - ld de, $ce3f + ld de, wTxRam2 ld hl, $ce49 call Func_2de0 ld a, l @@ -6660,20 +6708,20 @@ Func_2d43: ; 2d43 (0:2d43) call Func_2cd7 jr Func_2d43 .asm_2dab - ld hl, wc590 + ld hl, wDefaultText call Func_2cd7 jr Func_2d43 -.asm_2db3 +.tx_ram3 call Func_2ceb - ld de, $ce43 + ld de, wTxRam3 ld hl, $ce4a call Func_2de0 call Func_2e12 call Func_2cd7 jp Func_2d43 -.asm_2dc8 +.tx_ram1 call Func_2ceb - call Func_2e2c + call LoadTurnDuelistName ld a, [wcaa0] cp $6 jr z, .asm_2dda @@ -6683,6 +6731,8 @@ Func_2d43: ; 2d43 (0:2d43) call Func_2cd7 jp Func_2d43 +; inc [hl] +; hl = [de + 2*[hl]] Func_2de0: ; 2de0 (0:2de0) push de ld a, [hl] @@ -6745,17 +6795,17 @@ Func_2e12: ; 2e12 (0:2e12) jr nz, .asm_2e23 ret -Func_2e2c: ; 2e2c (0:2e2c) +LoadTurnDuelistName: ; 2e2c (0:2e2c) ld de, wcaa0 push de ldh a, [hWhoseTurn] cp OPPONENT_TURN jp z, .opponent_turn - call PrintPlayerName + call LoadPlayerName pop hl ret .opponent_turn - call PrintOpponentName + call LoadOpponentName pop hl ret @@ -6772,7 +6822,7 @@ PrintText: ; 2e41 (0:2e41) call BankswitchHome ret .from_ram - ld hl, wc590 + ld hl, wDefaultText .print_text call Func_2cc8 .next_tile_loop @@ -6780,14 +6830,14 @@ PrintText: ; 2e41 (0:2e41) ld b, a ld a, [wTextSpeed] inc a - cp $3 + cp 3 jr nc, .apply_delay ; if text speed is 1, pressing b ignores it bit B_BUTTON_F, b jr nz, .skip_delay jr .apply_delay .text_delay_loop - ; wait a number of frames equal to wTextSpeed between printing each text tile + ; wait a number of frames equal to [wTextSpeed] between printing each text tile call DoFrame .apply_delay dec a @@ -6834,37 +6884,49 @@ PrintTextBoxBorderLabel: ; 2e89 (0:2e89) .special ldh a, [hWhoseTurn] cp OPPONENT_TURN - jp z, PrintOpponentName - jp PrintPlayerName + jp z, LoadOpponentName + jp LoadPlayerName ; 0x2ea9 - INCROM $2ea9, $2ebb +Func_2ea9: ; 2ea9 (0:2ea9) + ldh [hff96], a + ldh a, [hBankROM] + push af + call ReadTextOffset + ldh a, [hff96] + call $23fd + pop af + call BankswitchHome + ret +; 0x2ebb -Func_2ebb: ; 2ebb (0:2ebb) +; text pointer (usually of a card name) for TX_RAM2 +LoadTxRam2: ; 2ebb (0:2ebb) ld a, l - ld [wce3f], a + ld [wTxRam2], a ld a, h - ld [wce40], a + ld [wTxRam2 + 1], a ret -Func_2ec4: ; 2ec4 (0:2ec4) +; a number between 0 and 65535 for TX_RAM3 +LoadTxRam3: ; 2ec4 (0:2ec4) ld a, l - ld [wce43], a + ld [wTxRam3], a ld a, h - ld [wce44], a + ld [wTxRam3 + 1], a ret ; 0x2ecd INCROM $2ecd, $2f0a ; load data of card with id at e to wLoadedCard2 -LoadCardDataToBuffer2: ; 2f0a (0:2f0a) +LoadCardDataToBuffer2_FromCardID: ; 2f0a (0:2f0a) push hl ld hl, wLoadedCard2 jr LoadCardDataToRAM ; load data of card with id at e to wLoadedCard1 -LoadCardDataToBuffer1: ; 2f10 (0:2f10) +LoadCardDataToBuffer1_FromCardID: ; 2f10 (0:2f10) push hl ld hl, wLoadedCard1 ; fallthrough @@ -7667,7 +7729,7 @@ Func_3317: ; 3317 (0:3317) call SwapTurn ld a, DUELVARS_ARENA_CARD call GetTurnDuelistVariable - call LoadDeckCardToBuffer2 + call LoadCardDataToBuffer2_FromDeckIndex ld a, DUELVARS_ARENA_CARD_HP call GetTurnDuelistVariable push af @@ -7676,13 +7738,13 @@ Func_3317: ; 3317 (0:3317) call SubstractHP ld a, [wLoadedCard2ID] ld [wTempNonTurnDuelistCardID], a - ld hl, $a - call Func_2ec4 + ld hl, 10 + call LoadTxRam3 ld hl, wLoadedCard2Name ld a, [hli] ld h, [hl] ld l, a - call Func_2ebb + call LoadTxRam2 ldtx hl, ReceivesDamageDueToStrikesBackText call DrawWideTextBox_WaitForInput pop hl @@ -7690,7 +7752,7 @@ Func_3317: ; 3317 (0:3317) or a jr z, .asm_3379 xor a - call Func_1aac + call PrintPlayAreaCardKnockedOutIfNoHP .asm_3379 call SwapTurn pop de @@ -7863,7 +7925,7 @@ HandleNoDamageOrEffectSubstatus: ; 3432 (0:3432) ld a, [wTempTurnDuelistCardID] ld e, a ld d, $0 - call LoadCardDataToBuffer2 + call LoadCardDataToBuffer2_FromCardID ld a, [wLoadedCard2Stage] or a ret z @@ -8230,12 +8292,12 @@ HandleDestinyBondSubstatus: ; 363b (0:363b) pop hl ld l, DUELVARS_ARENA_CARD ld a, [hl] - call LoadDeckCardToBuffer2 + call LoadCardDataToBuffer2_FromDeckIndex ld hl, wLoadedCard2Name ld a, [hli] ld h, [hl] ld l, a - call Func_2ebb + call LoadTxRam2 ldtx hl, KnockedOutDueToDestinyBondText call DrawWideTextBox_WaitForInput ret @@ -8266,16 +8328,16 @@ HandleStrikesBack: ; 367b (0:367b) ApplyStrikesBack: ; 36a2 (0:36a2) push hl - call Func_2ec4 + call LoadTxRam3 ld a, [wTempTurnDuelistCardID] ld e, a ld d, $0 - call LoadCardDataToBuffer2 + call LoadCardDataToBuffer2_FromCardID ld hl, wLoadedCard2Name ld a, [hli] ld h, [hl] ld l, a - call Func_2ebb + call LoadTxRam2 ld a, DUELVARS_ARENA_CARD_HP call GetTurnDuelistVariable pop de @@ -8290,7 +8352,7 @@ ApplyStrikesBack: ; 36a2 (0:36a2) ret z call WaitForWideTextBoxInput xor a - call Func_1aac + call PrintPlayAreaCardKnockedOutIfNoHP call $503a scf ret @@ -8380,7 +8442,7 @@ GetArenaPokemonWeakness: ; 3730 (0:3730) GetPokemonWeakness: call GetTurnDuelistVariable - call LoadDeckCardToBuffer2 + call LoadCardDataToBuffer2_FromDeckIndex ld a, [wLoadedCard2Weakness] ret ; 0x3743 @@ -8406,7 +8468,7 @@ GetArenaPokemonResistance: ; 374a (0:374a) GetPokemonResistance: call GetTurnDuelistVariable - call LoadDeckCardToBuffer2 + call LoadCardDataToBuffer2_FromDeckIndex ld a, [wLoadedCard2Resistance] ret ; 0x375d @@ -8789,7 +8851,29 @@ Func_3a40: ; 3a40 (0:3a40) ret ; 0x3a45 - INCROM $3a45, $3a5e +Func_3a45: ; 3a45 (0:3a45) + farcall Func_11343 + ret +; 0x3a4a + +Func_3a4a: ; 3a4a (0:3a4a) + farcall Func_115a3 + ret +; 0x3a4f + +Func_3a4f: ; 3a4f (0:3a4f) + push af + push bc + push de + push hl + ld c, $00 + farcall Func_1157c + pop hl + pop de + pop bc + pop af + ret +; 0x3a5e Func_3a5e: ; 3a5e (0:3a5e) ldh a, [hBankROM] @@ -8883,7 +8967,10 @@ Func_3abd: ; 3abd (0:3abd) ret ; 0x3ae8 - INCROM $3ae8, $3aed +Func_3ae8: ; 3ae8 (0:3ae8) + farcall Func_11f4e + ret +; 0x3aed ; finds an OWScript from the first byte and puts the next two bytes (usually arguments?) into cb RunOverworldScript: ; 3aed (0:3aed) @@ -8914,7 +9001,16 @@ RunOverworldScript: ; 3aed (0:3aed) jp hl ; 0x3b11 - INCROM $3b11, $3b21 +Func_3b11: ; 3b11 (0:3b11) + ldh a, [hBankROM] + push af + ld a, $04 + call BankswitchHome + call $66d1 + pop af + call BankswitchHome + ret +; 0x3b21 Func_3b21: ; 3b21 (0:3b21) ldh a, [hBankROM] @@ -9039,7 +9135,10 @@ Func_3c45: ; 3c45 (0:3c45) jp hl ; 0x3c46 - INCROM $3c46, $3c48 +Func_3c46: ; 3c46 (0:3c46) + push bc + ret +; 0x3c48 DoFrameIfLCDEnabled: ; 3c48 (0:3c48) push af @@ -9094,7 +9193,15 @@ Func_3c83: ; 3c83 (0:3c83) ret ; 0x3c87 - INCROM $3c87, $3c96 +Func_3c87: ; 3c87 (0:3c87) + push af + call PauseSong + pop af + call PlaySong + call Func_3c96 + call ResumeSong + ret +; 0x3c96 Func_3c96: ; 3c96 (0:3c96) call DoFrameIfLCDEnabled diff --git a/src/macros/code.asm b/src/macros/code.asm index 24c3bf1..276bd6a 100644 --- a/src/macros/code.asm +++ b/src/macros/code.asm @@ -30,16 +30,13 @@ ENDM farcall: MACRO rst $28 +if _NARG == 1 db BANK(\1) dw \1 -ENDM - -; used when the specified bank does not match the bank of the specified function -; otherwise, farcall is preferred -farcallx: MACRO - rst $28 +else db \1 dw \2 +endc ENDM ; the rst $38 handler is a single ret diff --git a/src/wram.asm b/src/wram.asm index 99dbd6d..2696c3c 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -285,9 +285,9 @@ wOpponentDeck:: ; c480 wDuelCardOrAttackList:: ; c510 ds $80 -; this appears to be kept updated with some default text that is used +; this is kept updated with some default text that is used ; when the text printing functions are called with text id $0000 -wc590:: ; c590 +wDefaultText:: ; c590 ds $70 SECTION "WRAM Text Engine", WRAM0 @@ -791,25 +791,29 @@ wcd9f:: ; cd9f ; $b is the bank where the functions associated to card or effect commands are. ; Its only purpose seems to be store this value to be read by TryExecuteEffectCommandFunction. wce22:: ; ce22 - ds $1d - -wce3f:: ; cd3f ds $1 -wce40:: ; ce40 - ds $1 + ds $8 -wce41:: ; ce41 +wce2b:: ; ce2b ds $1 -wce42:: ; ce42 - ds $1 + ds $13 -wce43:: ; ce43 - ds $1 +; text pointer for the first TX_RAM2 of a text +; prints from wDefaultText if $0000 +wTxRam2:: ; cd3f + ds $2 -wce44:: ; ce44 - ds $3 +; text pointer for the second TX_RAM2 on a text +wTxRam2_b:: ; ce41 + ds $2 + +; a number between 0 and 65535 for TX_RAM3 +wTxRam3:: ; ce43 + ds $2 + + ds $2 ; when printing text, number of frames to wait between each text tile wTextSpeed:: ; ce47 |