diff options
-rwxr-xr-x | .gitignore | 1 | ||||
-rw-r--r-- | src/constants/card_data_constants.asm | 1 | ||||
-rwxr-xr-x | src/engine/bank1.asm | 28 | ||||
-rwxr-xr-x | src/engine/bank3.asm | 4 | ||||
-rwxr-xr-x | src/engine/bank4.asm | 2 | ||||
-rwxr-xr-x | src/engine/bank6.asm | 6 | ||||
-rwxr-xr-x | src/engine/home.asm | 60 | ||||
-rw-r--r-- | src/hram.asm | 3 | ||||
-rwxr-xr-x | src/wram.asm | 11 |
9 files changed, 67 insertions, 49 deletions
@@ -15,6 +15,7 @@ *.sgm *.sav *.sys +*.sn* # converted image/palette data *.1bpp diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm index 63e3a68..0b85773 100644 --- a/src/constants/card_data_constants.asm +++ b/src/constants/card_data_constants.asm @@ -1,4 +1,5 @@ CARD_DATA_LENGTH EQU $41 +DECK_SIZE EQU 60 ;;; card types (byte 1 of every card data) FIRE EQU $0 diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm index 364cbb6..77c9d3e 100755 --- a/src/engine/bank1.asm +++ b/src/engine/bank1.asm @@ -48,15 +48,15 @@ INCBIN "baserom.gbc",$406f,$409f - $406f ; graphics, name and deck have been introduced Duel_Start: ; 409f (1:409f) ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a ld a, $0 ld [$c2f1], a ld a, [$cc19] - ld [wOpponentDeck], a + ld [wOpponentDeckId], a call $6793 - call Func_1c72 + call GetOpposingTurnDuelistVariable_SwapTurn call Duel_LoadDecks - call Func_1c72 + call GetOpposingTurnDuelistVariable_SwapTurn jr .asm_40ca ld a, MUSIC_DUELTHEME1 @@ -108,7 +108,7 @@ Duel_Start: ; 409f (1:409f) cp $80 jr z, .asm_4126 .asm_4121 - call Func_1c72 + call GetOpposingTurnDuelistVariable_SwapTurn jr .mainDuelLoop .asm_4126 @@ -130,14 +130,14 @@ Duel_Start: ; 409f (1:409f) ld hl, $0076 call Func_2aab call Func_04a2 - ld a, [$ff97] + ld a, [hWhoseTurn] push af ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a call $4a97 call $4ad6 pop af - ld [$ff97], a + ld [hWhoseTurn], a call $3b21 ld a, [$cc07] cp $1 @@ -150,7 +150,7 @@ Duel_Start: ; 409f (1:409f) jr .asm_4196 .asm_4171 - ld a, [$ff97] + ld a, [hWhoseTurn] cp $c2 jr nz, .asm_418a .asm_4177 @@ -162,7 +162,7 @@ Duel_Start: ; 409f (1:409f) jr .asm_4196 .asm_4184 - ld a, [$ff97] + ld a, [hWhoseTurn] cp $c2 jr nz, .asm_4177 @@ -178,7 +178,7 @@ Duel_Start: ; 409f (1:409f) ld a, c call PlaySong ld a, $c3 - ld [$ff97], a + ld [hWhoseTurn], a call Func_2a59 call EnableLCD .asm_41a7 @@ -194,7 +194,7 @@ Duel_Start: ; 409f (1:409f) call $3b31 call ResetSerial ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a ret .asm_41c8 @@ -211,7 +211,7 @@ Duel_Start: ; 409f (1:409f) cp $1 jr z, .asm_41f3 ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a call $4b60 jp $40ee @@ -225,7 +225,7 @@ Duel_Start: ; 409f (1:409f) .asm_4201 ld a, h - ld [$ff97], a + ld [hWhoseTurn], a call $4b60 jp nc, $40ee ret diff --git a/src/engine/bank3.asm b/src/engine/bank3.asm index 3ec9202..cee8c72 100755 --- a/src/engine/bank3.asm +++ b/src/engine/bank3.asm @@ -27,7 +27,7 @@ LoadMap: ; c000 (3:4000) call Func_04a2 call Func_3ca0 ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a farcall Func_1c440 ld a, [$d0bb] ld [wCurMap], a @@ -392,7 +392,7 @@ Func_c2db: ; c2db (3:42db) call Func_3ca0 farcall Func_12bcd ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a call Func_c241 call Func_04a2 ld a, [$d111] diff --git a/src/engine/bank4.asm b/src/engine/bank4.asm index 8c4d39c..deeecf0 100755 --- a/src/engine/bank4.asm +++ b/src/engine/bank4.asm @@ -695,7 +695,7 @@ Func_126d1: ; 126d1 (4:66d1) ld [$d627], a .asm_126e1 ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a farcall Func_c1f8 farcall Func_1d078 ld a, [$d628] diff --git a/src/engine/bank6.asm b/src/engine/bank6.asm index 8d38e74..09bf69b 100755 --- a/src/engine/bank6.asm +++ b/src/engine/bank6.asm @@ -7,7 +7,7 @@ INCBIN "baserom.gbc",$18f9c,$1996e - $18f9c Func_1996e: ; 1996e (6:596e) call EnableExtRAM ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a ld hl, $a100 ld bc, $1607 .asm_1997b @@ -82,7 +82,7 @@ Func_199e0: ; 199e0 (6:59e0) push hl ld de, $0018 add hl, de - ld de, $c400 + ld de, wPlayerDeck ld c, $3c .asm_19a04 ld a, [de] @@ -155,7 +155,7 @@ Func_1a61f: ; 1a61f (6:661f) ld l, a bank1call $2ebb ld a, $c2 - ld [$ff97], a + ld [hWhoseTurn], a pop hl bank1call $5e5f .asm_1a680 diff --git a/src/engine/home.asm b/src/engine/home.asm index de9662d..8d64870 100755 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -1198,7 +1198,7 @@ ClearExtRAMBank: ; 0863 (0:0863) ret ; returns h * l in hl -HtimesL:: ; 0879 (0:0879) +HtimesL: ; 0879 (0:0879) push de ld a, h ld e, l @@ -2061,17 +2061,17 @@ ClearSerialData: ; 0eb1 (0:0eb1) INCBIN "baserom.gbc",$0ebf,$1072 - $0ebf -; copies the deck pointed to by de to $c400 or $c480 +; copies the deck pointed to by de to wPlayerDeck or wOpponentDeck CopyDeckData: ; 1072 (0:1072) - ld hl, $c400 - ld a, [$ff97] + ld hl, wPlayerDeck + ld a, [hWhoseTurn] cp $c2 - jr z, .asm_107e - ld hl, $c480 -.asm_107e + jr z, .copyDeckData + ld hl, wOpponentDeck +.copyDeckData ; start by putting a terminator at the end of the deck push hl - ld bc, 59 + ld bc, DECK_SIZE - 1 add hl, bc ld [hl], $0 pop hl @@ -2099,7 +2099,7 @@ CopyDeckData: ; 1072 (0:1072) ld a, [de] ld [hl], a pop hl - ld bc, 59 + ld bc, DECK_SIZE - 1 add hl, bc ld a, [hl] or a @@ -2111,21 +2111,24 @@ CopyDeckData: ; 1072 (0:1072) INCBIN "baserom.gbc",$10aa,$160b - $10aa -Func_160b: ; 160b (0:160b) +; returns [[hWhoseTurn] * $100 + a] in a +; i.e. variable a of the player whose turn it is +GetTurnDuelistVariable: ; 160b (0:160b) ld l, a - ld a, [$ff97] + ld a, [hWhoseTurn] ld h, a ld a, [hl] ret -Func_1611: ; 1611 (0:1611) +; returns [([hWhoseTurn] ^ $1) * $100 + a] in a +; i.e. variable a of the player whose turn it is not +GetOpposingTurnDuelistVariable: ; 1611 (0:1611) ld l, a - ld a, [$ff97] + ld a, [hWhoseTurn] ld h, $c3 cp $c2 jr z, .asm_161c ld h, $c2 - .asm_161c ld a, [hl] ret @@ -2133,12 +2136,15 @@ Func_1611: ; 1611 (0:1611) INCBIN "baserom.gbc",$161e,$1c72 - $161e -Func_1c72: ; 1c72 (0:1c72) +; returns [([hWhoseTurn] ^ $1) * $100 + a] in a +; i.e. variable a of the player whose turn it is not +; Also: [hWhoseTurn] <-- [hWhoseTurn ^ $1] +GetOpposingTurnDuelistVariable_SwapTurn: ; 1c72 (0:1c72) push af push hl - call Func_1611 + call GetOpposingTurnDuelistVariable ld a, h - ld [$ff97], a + ld [hWhoseTurn], a pop hl pop af ret @@ -3532,7 +3538,7 @@ INCBIN "baserom.gbc",$2b70,$2b78 - $2b70 Duel_LoadDecks: ; 2b78 (0:2b78) xor a ld [wIsPracticeDuel], a - ld a, [wOpponentDeck] + ld a, [wOpponentDeckId] cp SAMS_NORMAL_DECK - 2 jr z, .normalSamDuel or a ; cp SAMS_PRACTICE_DECK - 2 @@ -3546,11 +3552,11 @@ Duel_LoadDecks: ; 2b78 (0:2b78) .normalSamDuel xor a - ld [wOpponentDeck], a - call Func_1c72 + ld [wOpponentDeckId], a + call GetOpposingTurnDuelistVariable_SwapTurn ld a, PRACTICE_PLAYER_DECK call LoadDeck - call Func_1c72 + call GetOpposingTurnDuelistVariable_SwapTurn ld hl, $caca ld a, $57 ld [hli], a @@ -3562,16 +3568,16 @@ Duel_LoadDecks: ; 2b78 (0:2b78) inc a inc a call LoadDeck - ld a, [wOpponentDeck] + ld a, [wOpponentDeckId] cp NUMBER_OF_DECKS jr c, .validDeck ld a, PRACTICE_PLAYER_DECK - 2 - ld [wOpponentDeck], a + ld [wOpponentDeckId], a .validDeck ld a, $f1 - call Func_160b - ld a, [wOpponentDeck] + call GetTurnDuelistVariable + ld a, [wOpponentDeckId] or $80 ld [hl], a ret @@ -3826,7 +3832,7 @@ Func_2e12: ; 2e12 (0:2e12) Func_2e2c: ; 2e2c (0:2e2c) ld de, $caa0 push de - ld a, [$ff97] + ld a, [hWhoseTurn] cp $c3 jp z, .asm_2e3c call Func_1c7d @@ -3906,7 +3912,7 @@ PrintTextBoxBorderLabel: ; 2e89 (0:2e89) dec de ret .done - ld a, [$ff97] + ld a, [hWhoseTurn] cp $c3 jp z, Func_1c8e jp Func_1c7d diff --git a/src/hram.asm b/src/hram.asm index ebac5a9..9868486 100644 --- a/src/hram.asm +++ b/src/hram.asm @@ -14,3 +14,6 @@ hSCX EQU $FF92 hSCY EQU $FF93 hWX EQU $FF94 hWY EQU $FF95 + +; $c2 = player ; $c3 = opponent +hWhoseTurn EQU $FF97 diff --git a/src/wram.asm b/src/wram.asm index 9aeac92..8ded548 100755 --- a/src/wram.asm +++ b/src/wram.asm @@ -3,7 +3,14 @@ INCLUDE "constants.asm" ;--- Bank 0: $Cxxx ---------------------------------------- SECTION "WRAM0", WRAM0 - ds $a00 + ds $400 + +wPlayerDeck:: ; c400 + ds $80 + +wOpponentDeck:: ; c480 + ds $80 + ds $500 wBufOAM:: ; ca00 ds $a0 @@ -125,7 +132,7 @@ wSerialRecvBuf:: ; $cba5 - $cbc4 ; this seems to hold the current opponent's deck id - 2, ; perhaps to account for the two unused pointers at the ; beginning of DeckPointers -wOpponentDeck:: ; cc0e +wOpponentDeckId:: ; cc0e ds $1 ds $4 |