diff options
-rwxr-xr-x | main.asm | 208 | ||||
-rw-r--r-- | wram.asm | 1123 |
2 files changed, 662 insertions, 669 deletions
@@ -490,7 +490,7 @@ OverworldLoopLessDelay: ; 0402 (0:0402) ld a,[$d736] bit 6,a ; jumping down a ledge? call nz, HandleMidJump - ld a,[W_WALKCOUNTER] + ld a,[wWalkCounter] and a jp nz,.moveAhead ; if the player sprite has not yet completed the walking animation call GetJoypadStateOverworld ; get joypad state (which is possibly simulated) @@ -694,7 +694,7 @@ OverworldLoopLessDelay: ; 0402 (0:0402) jp c,OverworldLoop .noCollision ld a,$08 - ld [W_WALKCOUNTER],a + ld [wWalkCounter],a jr .moveAhead2 .moveAhead ld a,[$d736] @@ -717,7 +717,7 @@ OverworldLoopLessDelay: ; 0402 (0:0402) call BikeSpeedup ; if riding a bike and not jumping a ledge .normalPlayerSpriteAdvancement call AdvancePlayerSprite - ld a,[W_WALKCOUNTER] + ld a,[wWalkCounter] and a jp nz,CheckMapConnections ; it seems like this check will never succeed (the other place where CheckMapConnections is run works) ; walking animation finished @@ -1214,12 +1214,12 @@ HandleBlackOut: ; 0931 (0:0931) jp Func_5d5f StopMusic: ; 0951 (0:0951) - ld [W_CURCHANNELPOINTER],a + ld [wMusicChannelPointer],a ld a,$ff ld [$c0ee],a call PlaySound .waitLoop - ld a,[W_CURCHANNELPOINTER] + ld a,[wMusicChannelPointer] and a jr nz,.waitLoop jp StopAllSounds @@ -1902,7 +1902,7 @@ AdvancePlayerSprite: ; 0d27 (0:0d27) ld b,a ld a,[$c105] ; delta X ld c,a - ld hl,W_WALKCOUNTER ; walking animation counter + ld hl,wWalkCounter ; walking animation counter dec [hl] jr nz,.afterUpdateMapCoords ; if it's the end of the animation, update the player's map coordinates @@ -1913,7 +1913,7 @@ AdvancePlayerSprite: ; 0d27 (0:0d27) add c ld [W_XCOORD],a .afterUpdateMapCoords - ld a,[W_WALKCOUNTER] ; walking animation counter + ld a,[wWalkCounter] ; walking animation counter cp a,$07 jp nz,.scrollBackgroundAndSprites ; if this is the first iteration of the animation @@ -2781,7 +2781,7 @@ LoadMapData: ; 1241 (0:1241) ld [$d526],a ld [$ffaf],a ld [$ffae],a - ld [W_WALKCOUNTER],a + ld [wWalkCounter],a ld [$d119],a ld [$d11a],a ld [$d3a8],a @@ -5271,7 +5271,7 @@ StopAllSounds: ; 200e (0:200e) ld [$c0ef], a ld [$c0f0], a xor a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld [$c0ee], a ld [$cfca], a dec a @@ -5825,7 +5825,7 @@ asm_2324: ; 2324 (0:2324) ret z .asm_2351 ld a, c - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld a, b ld [$cfca], a ld [$c0ee], a @@ -5883,7 +5883,7 @@ PlayMusic: ; 23a1 (0:23a1) ld b, a ld [$c0ee], a xor a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld a, c ld [$c0ef], a ld [$c0f0], a @@ -5904,7 +5904,7 @@ PlaySound: ; 23b1 (0:23b1) ld [$c02c], a ld [$c02d], a .asm_23c8 - ld a, [W_CURCHANNELPOINTER] + ld a, [wMusicChannelPointer] and a jr z, .asm_23e3 ld a, [$c0ee] @@ -5916,7 +5916,7 @@ PlaySound: ; 23b1 (0:23b1) cp $ff jr nz, .asm_2414 xor a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a .asm_23e3 xor a ld [$c0ee], a @@ -5949,11 +5949,11 @@ PlaySound: ; 23b1 (0:23b1) .asm_2414 ld a, b ld [$cfca], a - ld a, [W_CURCHANNELPOINTER] + ld a, [wMusicChannelPointer] ld [$cfc8], a ld [$cfc9], a ld a, b - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a .asm_2425 pop bc pop de @@ -6698,7 +6698,7 @@ ResetPlayerSpriteData_ClearSpriteData: ; 28c4 (0:28c4) jp FillMemory Func_28cb: ; 28cb (0:28cb) - ld a, [W_CURCHANNELPOINTER] + ld a, [wMusicChannelPointer] and a jr nz, .asm_28dc ld a, [$d72c] @@ -6733,10 +6733,10 @@ Func_28cb: ; 28cb (0:28cb) ld [$FF00+$24], a ret .asm_2903 - ld a, [W_CURCHANNELPOINTER] + ld a, [wMusicChannelPointer] ld b, a xor a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld a, $ff ld [$c0ee], a call PlaySound @@ -7119,7 +7119,7 @@ SubtractAmountPaidFromMoney: ; 2b96 (0:2b96) ; adds the amount the player sold to their money AddAmountSoldToMoney: ; 2b9e (0:2b9e) - ld de,W_PLAYERMONEY1 + ld de,wPlayerMoney + 2 ld hl,$ffa1 ; total price of items ld c,3 ; length of money in bytes ld a,$0b @@ -7133,7 +7133,7 @@ AddAmountSoldToMoney: ; 2b9e (0:2b9e) ; function to remove an item (in varying quantities) from the player's bag or PC box ; INPUT: -; HL = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) +; HL = address of inventory (either wNumBagItems or wNumBoxItems) ; [$CF92] = index (within the inventory) of the item to remove ; [$CF96] = quantity to remove RemoveItemFromInventory: ; 2bbb (0:2bbb) @@ -7150,7 +7150,7 @@ RemoveItemFromInventory: ; 2bbb (0:2bbb) ; function to add an item (in varying quantities) to the player's bag or PC box ; INPUT: -; HL = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) +; HL = address of inventory (either wNumBagItems or wNumBoxItems) ; [$CF91] = item ID ; [$CF96] = item quantity ; sets carry flag if successful, unsets carry flag if unsuccessful @@ -7909,7 +7909,7 @@ UseItem: ; 30bc (0:30bc) ; confirms the item toss and then tosses the item ; INPUT: -; hl = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) +; hl = address of inventory (either wNumBagItems or wNumBoxItems) ; [$cf91] = item ID ; [$cf92] = index of item within inventory ; [$cf96] = quantity to toss @@ -8427,7 +8427,7 @@ PlayTrainerMusic: ; 33e8 (0:33e8) and a ret nz xor a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld a, $ff call PlaySound ; stop music ld a, BANK(Music_MeetEvilTrainer) @@ -8767,7 +8767,7 @@ Func_359e: ; 359e (0:359e) ; sets carry flag if not enough money ; sets zero flag if amounts match exactly HasEnoughMoney: ; 35a6 (0:35a6) - ld de, W_PLAYERMONEY3 ; $d347 + ld de, wPlayerMoney ; $d347 ld hl, $ff9f ld c, $3 jp StringCmp @@ -8776,7 +8776,7 @@ HasEnoughMoney: ; 35a6 (0:35a6) ; sets carry flag if not enough coins ; sets zero flag if amounts match exactly HasEnoughCoins: ; 35b1 (0:35b1) - ld de, W_PLAYERCOINS1 + ld de, wPlayerCoins ld hl, $ffa0 ld c, $2 jp StringCmp @@ -10406,7 +10406,7 @@ GiveItem: ; 3e2e (0:3e2e) ld [$cf91], a ld a, c ld [$cf96], a - ld hl,W_NUMBAGITEMS + ld hl,wNumBagItems call AddItemToInventory ret nc call GetItemName ; $2fcf @@ -10698,11 +10698,11 @@ Func_40b0: ; 40b0 (1:40b0) ld [$FF00+$a1], a call HasEnoughMoney jr c, .asm_40ff - ld a, [W_PLAYERMONEY3] ; $d347 + ld a, [wPlayerMoney] ; $d347 ld [$FF00+$9f], a - ld a, [W_PLAYERMONEY2] ; $d348 + ld a, [wPlayerMoney + 1] ; $d348 ld [$FF00+$a0], a - ld a, [W_PLAYERMONEY1] ; $d349 + ld a, [wPlayerMoney + 2] ; $d349 ld [$FF00+$a1], a xor a ld [$FF00+$a2], a @@ -10712,11 +10712,11 @@ Func_40b0: ; 40b0 (1:40b0) ld a, $d call Predef ; indirect jump to Func_f71e (f71e (3:771e)) ld a, [$FF00+$a2] - ld [W_PLAYERMONEY3], a ; $d347 + ld [wPlayerMoney], a ; $d347 ld a, [$FF00+$a3] - ld [W_PLAYERMONEY2], a ; $d348 + ld [wPlayerMoney + 1], a ; $d348 ld a, [$FF00+$a4] - ld [W_PLAYERMONEY1], a ; $d349 + ld [wPlayerMoney + 2], a ; $d349 .asm_40ff ld hl, $d732 set 2, [hl] @@ -12073,7 +12073,7 @@ UpdatePlayerSprite: ; 4e31 (1:4e31) .asm_4e50 call Func_4c70 ld h, $c1 - ld a, [W_WALKCOUNTER] ; $cfc5 + ld a, [wWalkCounter] ; $cfc5 and a jr nz, .asm_4e90 ld a, [$d528] @@ -12189,7 +12189,7 @@ Func_4ed1: ; 4ed1 (1:4ed1) jp z, UpdateSpriteMovementDelay ; c1x1 == 2 cp $3 jp z, UpdateSpriteInWalkingAnimation ; c1x1 == 3 - ld a, [W_WALKCOUNTER] ; $cfc5 + ld a, [wWalkCounter] ; $cfc5 and a ret nz ; don't do anything yet if player is currently moving (redundant, already tested in CheckSpriteAvailability) call InitializeSpriteScreenPosition @@ -12571,7 +12571,7 @@ CheckSpriteAvailability: ; 50dc (1:50dc) jr .done .spriteVisible ld c, a - ld a, [W_WALKCOUNTER] ; $cfc5 + ld a, [wWalkCounter] ; $cfc5 and a jr nz, .done ; if player is currently walking, we're done call UpdateSpriteImage @@ -13126,7 +13126,7 @@ Func_5317: ; 5317 (1:5317) pop hl jr .asm_546a .asm_5489 - ld hl, W_PARTYMON6_MOVE4PP ; $d267 + ld hl, W_PARTYMON6DATA + W_PARTYMON1_MOVE4PP - W_PARTYMON1DATA ; $d267 dec c jr nz, .asm_546a ld de, $c5d0 @@ -13728,7 +13728,7 @@ Func_5849: ld a, [hl] ld [$cd3e], a ld a, $a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld a, $2 ld [$c0f0], a ld a, $e5 @@ -13825,7 +13825,7 @@ Func_5a5f: ; 5a5f (1:5a5f) ld [W_ISLINKBATTLE], a ; $d12b ld [$FF00+$b5], a ld a, $a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld a, BANK(Music_Celadon) ld [$c0f0], a ld a, (Music_Celadon - $4000) / 3 @@ -14741,7 +14741,7 @@ Function61BC: ; 61bc (1:61bc) ld [$C0EF],a ld [$C0F0],a ld a,$A - ld [W_CURCHANNELPOINTER],a + ld [wMusicChannelPointer],a ld a,$FF ld [$C0EE],a call PlaySound ; stop music @@ -15889,12 +15889,12 @@ TextTerminator_6b20: ; 6b20 (1:6b20) ; subtracts the amount the player paid from their money ; sets carry flag if there is enough money and unsets carry flag if not SubtractAmountPaidFromMoney_: ; 6b21 (1:6b21) - ld de,W_PLAYERMONEY3 + ld de,wPlayerMoney ld hl,$ff9f ; total price of items ld c,3 ; length of money in bytes call StringCmp ret c - ld de,W_PLAYERMONEY1 + ld de,wPlayerMoney + 2 ld hl,$ffa1 ; total price of items ld c,3 ; length of money in bytes ld a,$0c @@ -16096,7 +16096,7 @@ DisplayPokemartDialogue_: ; 6c20 (1:6c20) ld hl, Func_39bd5 ld b, BANK(Func_39bd5) call Bankswitch - ld a,[W_NUMBAGITEMS] + ld a,[wNumBagItems] and a jp z,.bagEmpty ld hl,PokemonSellingGreetingText @@ -16107,7 +16107,7 @@ DisplayPokemartDialogue_: ; 6c20 (1:6c20) ld a,$13 ld [$d125],a call DisplayTextBoxID ; draw money text box - ld hl,W_NUMBAGITEMS + ld hl,wNumBagItems ld a,l ld [$cf8b],a ld a,h @@ -16156,7 +16156,7 @@ DisplayPokemartDialogue_: ; 6c20 (1:6c20) ld [$cf0a],a .skipSettingFlag1 call AddAmountSoldToMoney - ld hl,W_NUMBAGITEMS + ld hl,wNumBagItems call RemoveItemFromInventory jp .sellMenuLoop .unsellableItem @@ -16225,7 +16225,7 @@ DisplayPokemartDialogue_: ; 6c20 (1:6c20) .buyItem call .isThereEnoughMoney jr c,.notEnoughMoney - ld hl,W_NUMBAGITEMS + ld hl,wNumBagItems call AddItemToInventory jr nc,.bagFull call SubtractAmountPaidFromMoney @@ -16250,7 +16250,7 @@ DisplayPokemartDialogue_: ; 6c20 (1:6c20) call PrintText jp .loop .isThereEnoughMoney - ld de,W_PLAYERMONEY3 + ld de,wPlayerMoney ld hl,$ff9f ; item price ld c,3 ; length of money in bytes jp StringCmp @@ -16575,7 +16575,7 @@ DisplayPokemonCenterDialogue_: ; 6fe6 (1:6fe6) ld hl, Func_70433 call Bankswitch ; do the healing machine animation xor a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld a, [$c0f0] ld [$c0ef], a ld a, [$d35b] @@ -17268,7 +17268,7 @@ JapanesePokedexMenu: ; 74a1 (1:74a1) call ClearScreenArea FuncCoord 12, 1 ; $c3c0 ld hl, Coord - ld de, W_PLAYERMONEY3 ; $d347 + ld de, wPlayerMoney ; $d347 ld c, $a3 call PrintBCDNumber ld hl, $d730 @@ -17901,7 +17901,7 @@ Func_7995: ; 7995 (1:7995) xor a ld [wCurrentMenuItem], a ; $cc26 ld [wListScrollOffset], a ; $cc36 - ld a, [W_NUMBAGITEMS] ; $d31d + ld a, [wNumBagItems] ; $d31d and a jr nz, Func_79ab ld hl, UnnamedText_7b3b ; $7b3b @@ -17911,7 +17911,7 @@ Func_7995: ; 7995 (1:7995) Func_79ab: ; 79ab (1:79ab) ld hl, UnnamedText_7b2c ; $7b2c call PrintText - ld hl, W_NUMBAGITEMS ; $d31d + ld hl, wNumBagItems ; $d31d ld a, l ld [$cf8b], a ld a, h @@ -17934,14 +17934,14 @@ Func_79ab: ; 79ab (1:79ab) cp $ff jp z, Func_79ab .asm_79e7 - ld hl, W_NUMBOXITEMS ; $d53a + ld hl, wNumBoxItems ; $d53a call AddItemToInventory jr c, .asm_79f8 ld hl, UnnamedText_7b40 ; $7b40 call PrintText jp Func_79ab .asm_79f8 - ld hl, W_NUMBAGITEMS ; $d31d + ld hl, wNumBagItems ; $d31d call RemoveItemFromInventory call WaitForSoundToFinish ld a, $ab @@ -17955,7 +17955,7 @@ Func_7a12: ; 7a12 (1:7a12) xor a ld [wCurrentMenuItem], a ; $cc26 ld [wListScrollOffset], a ; $cc36 - ld a, [W_NUMBOXITEMS] ; $d53a + ld a, [wNumBoxItems] ; $d53a and a jr nz, Func_7a28 ld hl, UnnamedText_7b54 ; $7b54 @@ -17965,7 +17965,7 @@ Func_7a12: ; 7a12 (1:7a12) Func_7a28: ; 7a28 (1:7a28) ld hl, UnnamedText_7b45 ; $7b45 call PrintText - ld hl, W_NUMBOXITEMS ; $d53a + ld hl, wNumBoxItems ; $d53a ld a, l ld [$cf8b], a ld a, h @@ -17988,14 +17988,14 @@ Func_7a28: ; 7a28 (1:7a28) cp $ff jp z, Func_7a28 .asm_7a64 - ld hl, W_NUMBAGITEMS ; $d31d + ld hl, wNumBagItems ; $d31d call AddItemToInventory jr c, .asm_7a75 ld hl, UnnamedText_7b59 ; $7b59 call PrintText jp Func_7a28 .asm_7a75 - ld hl, W_NUMBOXITEMS ; $d53a + ld hl, wNumBoxItems ; $d53a call RemoveItemFromInventory call WaitForSoundToFinish ld a, $ab @@ -18009,7 +18009,7 @@ Func_7a8f: ; 7a8f (1:7a8f) xor a ld [wCurrentMenuItem], a ; $cc26 ld [wListScrollOffset], a ; $cc36 - ld a, [W_NUMBOXITEMS] ; $d53a + ld a, [wNumBoxItems] ; $d53a and a jr nz, Func_7aa5 ld hl, UnnamedText_7b54 ; $7b54 @@ -18019,7 +18019,7 @@ Func_7a8f: ; 7a8f (1:7a8f) Func_7aa5: ; 7aa5 (1:7aa5) ld hl, UnnamedText_7b5e ; $7b5e call PrintText - ld hl, W_NUMBOXITEMS ; $d53a + ld hl, wNumBoxItems ; $d53a ld a, l ld [$cf8b], a ld a, h @@ -18362,7 +18362,7 @@ INCLUDE "music/sfx/sfx_02_36.asm" PlayBattleMusic: ; 0x90c6 xor a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld [$d083], a dec a ld [$c0ee], a @@ -20115,7 +20115,7 @@ Music_Cities1AlternateTempo: ; 0x9b81 ld [$cfc8], a ld [$cfc9], a ld a, $ff - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld c, $64 call DelayFrames ld c, BANK(Music_Cities1) @@ -22282,7 +22282,7 @@ UnnamedText_cdff: ; cdff (3:4dff) ; function to add an item (in varying quantities) to the player's bag or PC box ; INPUT: -; hl = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) +; hl = address of inventory (either wNumBagItems or wNumBoxItems) ; [$CF91] = item ID ; [$CF96] = item quantity ; sets carry flag if successful, unsets carry flag if unsuccessful @@ -22294,10 +22294,10 @@ AddItemToInventory_: ; ce04 (3:4e04) push hl push hl ld d,50 ; PC box can hold 50 items - ld a,W_NUMBAGITEMS & $FF + ld a,wNumBagItems & $FF cp l jr nz,.checkIfInventoryFull - ld a,W_NUMBAGITEMS >> 8 + ld a,wNumBagItems >> 8 cp h jr nz,.checkIfInventoryFull ; if the destination is the bag @@ -22376,7 +22376,7 @@ AddItemToInventory_: ; ce04 (3:4e04) ; function to remove an item (in varying quantities) from the player's bag or PC box ; INPUT: -; hl = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) +; hl = address of inventory (either wNumBagItems or wNumBoxItems) ; [$CF92] = index (within the inventory) of the item to remove ; [$CF96] = quantity to remove RemoveItemFromInventory_: ; ce74 (3:4e74) @@ -26943,7 +26943,7 @@ ItemUseEvoStone: ; da5b (3:5a5b) jr z,.noEffect pop af ld [$cf92],a - ld hl,W_NUMBAGITEMS + ld hl,wNumBagItems ld a,1 ; remove 1 stone ld [$cf96],a jp RemoveItemFromInventory @@ -28512,7 +28512,7 @@ PrintItemUseTextAndRemoveItem: ; e563 (3:6563) call WaitForTextScrollButtonPress ; wait for button press RemoveUsedItem: ; e571 (3:6571) - ld hl,W_NUMBAGITEMS + ld hl,wNumBagItems ld a,1 ; one item ld [$cf96],a ; store quantity jp RemoveItemFromInventory @@ -28784,7 +28784,7 @@ GetSelectedMoveOffset2: ; e6e9 (3:66e9) ; confirms the item toss and then tosses the item ; INPUT: -; hl = address of inventory (either W_NUMBAGITEMS or W_NUMBOXITEMS) +; hl = address of inventory (either wNumBagItems or wNumBoxItems) ; [$cf91] = item ID ; [$cf92] = index of item within inventory ; [$cf96] = quantity to toss @@ -29026,7 +29026,7 @@ Func_e7a4: ; e7a4 (3:67a4) ld de, W_BOXMON1DATA ld bc, $c call CopyData - ld hl, W_PLAYERIDHI ; $d359 + ld hl, wPlayerID ; $d359 ld a, [hli] ld [de], a inc de @@ -30290,10 +30290,10 @@ _AddPokemonToParty: ; f2e5 (3:72e5) ld a, $3e call Predef ; indirect jump to WriteMonMoves (3afb8 (e:6fb8)) pop de - ld a, [W_PLAYERIDHI] ; set trainer ID to player ID + ld a, [wPlayerID] ; set trainer ID to player ID inc de ld [de], a - ld a, [W_PLAYERIDLO] + ld a, [wPlayerID + 1] inc de ld [de], a push de @@ -30971,21 +30971,21 @@ Func_f839: ; f839 (3:7839) InitializePlayerData: ; f850 (3:7850) call GenRandom ld a, [H_RAND2] - ld [W_PLAYERIDHI], a ; set player trainer id + ld [wPlayerID], a ; set player trainer id call GenRandom ld a, [H_RAND1] - ld [W_PLAYERIDLO], a + ld [wPlayerID + 1], a ld a, $ff ld [$d71b], a ; XXX what's this? ld hl, W_NUMINPARTY ; $d163 call InitializeEmptyList ; no party mons ld hl, W_NUMINBOX ; $da80 call InitializeEmptyList ; no boxed mons - ld hl, W_NUMBAGITEMS ; $d31d + ld hl, wNumBagItems ; $d31d call InitializeEmptyList ; no items - ld hl, W_NUMBOXITEMS ; $d53a + ld hl, wNumBoxItems ; $d53a call InitializeEmptyList ; no boxed items - ld hl, W_PLAYERMONEY2 ; $d348 + ld hl, wPlayerMoney + 1 ; $d348 ld a, $30 ld [hld], a ; set money to 00 30 00 (3000) xor a @@ -30996,7 +30996,7 @@ InitializePlayerData: ; f850 (3:7850) ld hl, W_OBTAINEDBADGES ; $d356 ld [hli], a ; no badges obtained ld [hl], a ; XXX what's this? - ld hl, W_PLAYERCOINS1 ; $d5a4 + ld hl, wPlayerCoins ; $d5a4 ld [hli], a ; no coins ld [hl], a ld hl, W_GAMEPROGRESSFLAGS ; $d5f0 @@ -31014,7 +31014,7 @@ InitializeEmptyList: ; f8a0 (3:78a0) Func_f8a5: ; f8a5 (3:78a5) call Load16BitRegisters - ld hl, W_NUMBAGITEMS ; $d31d + ld hl, wNumBagItems ; $d31d .asm_f8ab inc hl ld a, [hli] @@ -32869,7 +32869,7 @@ StartMenu_Item: ; 13302 (4:7302) call PrintText jr .exitMenu .notInLinkBattle - ld bc,W_NUMBAGITEMS + ld bc,wNumBagItems ld hl,$cf8b ld a,c ld [hli],a @@ -32999,7 +32999,7 @@ StartMenu_Item: ; 13302 (4:7302) inc a jr z,.tossZeroItems .skipAskingQuantity - ld hl,W_NUMBAGITEMS + ld hl,wNumBagItems call TossItem .tossZeroItems jp ItemMenuLoop @@ -33175,7 +33175,7 @@ DrawTrainerInfo: ; 1349a (4:749a) call PlaceString FuncCoord 8,4 ld hl,Coord - ld de,W_PLAYERMONEY3 + ld de,wPlayerMoney ld c,$e3 call PrintBCDNumber FuncCoord 9,6 @@ -33563,7 +33563,7 @@ Func_137aa: ; 137aa (4:77aa) inc hl or [hl] jr z, .asm_1380a - ld de, W_PLAYERMONEY1 ; $d349 + ld de, wPlayerMoney + 2 ; $d349 ld c, $3 ld a, $b call Predef ; indirect jump to Func_f81d (f81d (3:781d)) @@ -35228,7 +35228,7 @@ UnnamedText_17f32: ; 17f32 (5:7f32) ; removes one of the specified item ID [$FFdb] from bag (if existent) RemoveItemByID: ; 17f37 (5:7f37) - ld hl, W_BAGITEM01 ; $d31e + ld hl, wBagItems ; $d31e ld a, [$FF00+$db] ld b, a xor a @@ -35249,7 +35249,7 @@ RemoveItemByID: ; 17f37 (5:7f37) ld [$cf96], a ld a, [$FF00+$dc] ld [wWhichPokemon], a ; $cf92 - ld hl, W_NUMBAGITEMS ; $d31d + ld hl, wNumBagItems ; $d31d jp RemoveItemFromInventory SECTION "bank6",ROMX,BANK[$6] @@ -40363,7 +40363,7 @@ OaksLabScript18: ; 1d009 (7:5009) ret Function1D00A: ; 1d00a (7:500a) - ld hl, W_BAGITEM01 + ld hl, wBagItems ld bc, $0000 .asm_1d010 ld a, [hli] @@ -43837,7 +43837,7 @@ asm_1e9ab: ; 1e9ab (7:69ab) asm_1e9b0: ; 1e9b0 (7:69b0) call EnableAutoTextBoxDrawing xor a - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a dec a call PlaySound ld c, BANK(SFX_02_5f) @@ -54990,7 +54990,7 @@ Func_39bd5: ; 39bd5 (e:5bd5) .asm_39c02 cp $2 jr nz, .asm_39c10 - ld hl, W_NUMBAGITEMS ; $d31d + ld hl, wNumBagItems ; $d31d ld de, ItemNames ; $472b ld a, $4 jr .asm_39c18 @@ -60597,7 +60597,7 @@ TrainerBattleVictory: ; 3c696 (f:4696) call Func_3381 ld hl, MoneyForWinningText ; $46e4 call PrintText - ld de, W_PLAYERMONEY1 ; $d349 + ld de, wPlayerMoney + 2 ; $d349 ld hl, $d07b ld c, $3 ld a, $b @@ -61101,7 +61101,7 @@ AnyPokemonAliveCheck: ; 3ca83 (f:4a83) ld e, a xor a ld hl, W_PARTYMON1_HP ; $d16c - ld bc, W_PARTYMON2_HP - W_PARTYMON1_HP - 1 ; $2b + ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA - 1 .partyMonsLoop or [hl] inc hl @@ -61445,7 +61445,7 @@ Func_3cd3a: ; 3cd3a (f:4d3a) ReadPlayerMonCurHPAndStatus: ; 3cd43 (f:4d43) ld a, [wPlayerMonNumber] ; $cc2f ld hl, W_PARTYMON1_HP ; $d16c - ld bc, W_PARTYMON2_HP - W_PARTYMON1_HP ; $2c + ld bc, W_PARTYMON2DATA - W_PARTYMON1DATA call AddNTimes ld d, h ld e, l @@ -61853,7 +61853,7 @@ asm_3d00e: ; 3d00e (f:500e) db $01, $04, $32, $ff .asm_3d031 - ld hl, W_NUMBAGITEMS ; $d31d + ld hl, wNumBagItems ; $d31d ld a, l ld [$cf8b], a ld a, h @@ -63545,11 +63545,11 @@ Func_3dc88: ; 3dc88 (f:5c88) ld bc, $2c ld a, [wPlayerMonNumber] ; $cc2f call AddNTimes - ld a, [W_PLAYERIDHI] ; $d359 + ld a, [wPlayerID] ; $d359 cp [hl] jr nz, .asm_3dcb1 inc hl - ld a, [W_PLAYERIDLO] ; $d35a + ld a, [wPlayerID + 1] ; $d35a cp [hl] jp z, Func_3ddb0 .asm_3dcb1 @@ -84902,7 +84902,7 @@ PrintPrizePrice: ; 5287a (14:687a) call PlaceString FuncCoord 13,1 ld hl,Coord - ld de,W_PLAYERCOINS1 + ld de,wPlayerCoins ld c,%10000010 call PrintBCDNumber ret @@ -84982,7 +84982,7 @@ HandlePrizeChoice: ; 528c6 (14:68c6) .SubtractCoins ; 14:692C call LoadCoinsToSubtract ld hl,$FFA1 - ld de,W_PLAYERCOINS2 + ld de,wPlayerCoins + 1 ld c,$02 ; how many bytes ld a,$0C call Predef ; subtract coins (BCD daa operations) @@ -85702,11 +85702,11 @@ Func_5525f: ; 5525f (15:525f) add hl, de ld b, [hl] inc hl - ld a, [W_PLAYERIDHI] ; $d359 + ld a, [wPlayerID] ; $d359 cp b jr nz, .asm_552d1 ld b, [hl] - ld a, [W_PLAYERIDLO] ; $d35a + ld a, [wPlayerID + 1] ; $d35a cp b ld a, $0 jr z, .asm_552d6 @@ -101536,7 +101536,7 @@ Func_70377: ; 70377 (1c:4377) call PlaceString FuncCoord 4, 10 ; $c46c ld hl, Coord - ld de, W_PLAYERMONEY3 ; $d347 + ld de, wPlayerMoney ; $d347 ld c, $a3 call PrintBCDNumber ld hl, UnnamedText_703fa ; $43fa @@ -101584,7 +101584,7 @@ Func_70423: ; 70423 (1c:4423) ld [$cfc8], a ld [$cfc9], a ld a, $ff - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a jp GBFadeOut2 Func_70433: ; 70433 (1c:4433) @@ -101605,12 +101605,12 @@ Func_70433: ; 70433 (1c:4433) ld de, Unknown_704d7 ; $44d7 call Func_70503 ld a, $4 - ld [W_CURCHANNELPOINTER], a + ld [wMusicChannelPointer], a ld a, $ff ld [$c0ee], a call PlaySound .asm_70464 - ld a, [W_CURCHANNELPOINTER] + ld a, [wMusicChannelPointer] and a jr nz, .asm_70464 ld a, [W_NUMINPARTY] ; $d163 @@ -102112,7 +102112,7 @@ _HandleMidJump: ; 7087e (1c:487e) ld [$c104], a ret .asm_70895 - ld a, [W_WALKCOUNTER] ; $cfc5 + ld a, [wWalkCounter] ; $cfc5 cp $0 ret nz call UpdateSprites @@ -107577,7 +107577,7 @@ Func_74ee0: ; 74ee0 (1d:4ee0) ld hl, UnnamedText_74fd8 call PrintText ld hl, $ffde - ld de, W_PLAYERMONEY1 ; $d349 + ld de, wPlayerMoney + 2 ; $d349 ld c, $3 ld a, $c call Predef ; indirect jump to Func_f836 (f836 (3:7836)) @@ -110850,10 +110850,10 @@ HiddenCoins: ; 76799 (1d:6799) ld a, $10 call Predef call EnableAutoTextBoxDrawing - ld a, [W_PLAYERCOINS1] + ld a, [wPlayerCoins] cp $99 jr nz, .RoomInCoinCase - ld a, [W_PLAYERCOINS2] + ld a, [wPlayerCoins + 1] cp $99 jr nz, .RoomInCoinCase ld a, $2c @@ -313,106 +313,185 @@ wListMenuID: ; cf94 ; ID used by DisplayListMenuID ds 1 + ds 48 +wWalkCounter: ; cfc5 +; walk animation counter + ds 1 -W_WALKCOUNTER EQU $CFC5 ; walk animation counter - -W_CURCHANNELPOINTER EQU $CFC7 ; (the current music channel pointer - $4000) / 3 - -W_ENEMYMOVENUM EQU $CFCC -W_ENEMYMOVEEFFECT EQU $CFCD -W_ENEMYMOVEPOWER EQU $CFCE -W_ENEMYMOVETYPE EQU $CFCF -W_ENEMYMOVEACCURACY EQU $CFD0 -W_ENEMYMOVEMAXPP EQU $CFD1 - -W_PLAYERMOVENUM EQU $CFD2 -W_PLAYERMOVEEFFECT EQU $CFD3 -W_PLAYERMOVEPOWER EQU $CFD4 -W_PLAYERMOVETYPE EQU $CFD5 -W_PLAYERMOVEACCURACY EQU $CFD6 -W_PLAYERMOVEMAXPP EQU $CFD7 - -W_ENEMYMONID EQU $CFD8 - -W_ENEMYMONNAME EQU $CFDA - -W_ENEMYMONCURHP EQU $CFE6 ; active opponent's hp (16 bits) -W_ENEMYMONNUMBER EQU $CFE8 ; active opponent's position in team (0 to 5) -W_ENEMYMONSTATUS EQU $CFE9 ; active opponent's status condition - ; bit 0 slp - ; bit 1 slp - ; bit 2 slp - ; bit 3 psn - ; bit 4 brn - ; bit 5 frz - ; bit 6 par - ; unused? (XXX confirm) -W_ENEMYMONTYPES EQU $CFEA -W_ENEMYMONTYPE1 EQU $CFEA -W_ENEMYMONTYPE2 EQU $CFEB -W_ENEMYMONMOVES EQU $CFED -W_ENEMYMONATKDEFIV EQU $CFF1 -W_ENEMYMONSPDSPCIV EQU $CFF2 -W_ENEMYMONLEVEL EQU $CFF3 -W_ENEMYMONMAXHP EQU $CFF4 ; (16 bits) -W_ENEMYMONATTACK EQU $CFF6 -W_ENEMYMONDEFENSE EQU $CFF8 -W_ENEMYMONSPEED EQU $CFFA -W_ENEMYMONSPECIAL EQU $CFFC -W_ENEMYMONPP EQU $CFFE + ds 1 + +wMusicChannelPointer: ; cfc7 +; (the current music channel address - $4000) / 3 + ds 1 + + ds 4 + +W_ENEMYMOVENUM: ; cfcc + ds 1 +W_ENEMYMOVEEFFECT: ; cfcd + ds 1 +W_ENEMYMOVEPOWER: ; cfce + ds 1 +W_ENEMYMOVETYPE: ; cfcf + ds 1 +W_ENEMYMOVEACCURACY: ; cfd0 + ds 1 +W_ENEMYMOVEMAXPP: ; cfd1 + ds 1 +W_PLAYERMOVENUM: ; cfd2 + ds 1 +W_PLAYERMOVEEFFECT: ; cfd3 + ds 1 +W_PLAYERMOVEPOWER: ; cfd4 + ds 1 +W_PLAYERMOVETYPE: ; cfd5 + ds 1 +W_PLAYERMOVEACCURACY: ; cfd6 + ds 1 +W_PLAYERMOVEMAXPP: ; cfd7 + ds 1 + +W_ENEMYMONID: ; cfd8 + ds 1 + + ds 1 + +W_ENEMYMONNAME: ; cfda + ds 11 + + ds 1 + +W_ENEMYMONCURHP: ; cfe6 +; active opponent's hp (16 bits) + ds 2 +W_ENEMYMONNUMBER: ; cfe8 +; active opponent's position in team (0 to 5) + ds 1 +W_ENEMYMONSTATUS: ; cfe9 +; active opponent's status condition + ds 1 +W_ENEMYMONTYPES: ; cfea +W_ENEMYMONTYPE1: ; cfea + ds 1 +W_ENEMYMONTYPE2: ; cfeb + ds 1 + ds 1 +W_ENEMYMONMOVES: ; cfed + ds 4 +W_ENEMYMONATKDEFIV: ; cff1 + ds 1 +W_ENEMYMONSPDSPCIV: ; cff2 + ds 1 +W_ENEMYMONLEVEL: ; cff3 + ds 1 +W_ENEMYMONMAXHP: ; cff4 + ds 2 +W_ENEMYMONATTACK: ; cff6 + ds 2 +W_ENEMYMONDEFENSE: ; cff8 + ds 2 +W_ENEMYMONSPEED: ; cffa + ds 2 +W_ENEMYMONSPECIAL: ; cffc + ds 2 + +W_ENEMYMONPP: ; cffe +; four moves (extends past $cfff) + ds 2 SECTION "WRAM Bank 1", WRAMX, BANK[1] -W_PLAYERMONNAME EQU $D009 -W_PLAYERMONID EQU $D014 -W_PLAYERMONCURHP EQU $D015 ; active opponent's hp (16 bits) -W_PLAYERMONSTATUS EQU $D018 ; the status of the player’s current monster - ; bit 0 slp - ; bit 1 slp - ; bit 2 slp - ; bit 3 psn - ; bit 4 brn - ; bit 5 frz - ; bit 6 par - ; unused? (XXX confirm) -W_PLAYERMONTYPES EQU $D019 -W_PLAYERMONTYPE1 EQU $D019 -W_PLAYERMONTYPE2 EQU $D01A -W_PLAYERMONMOVES EQU $D01C -W_PLAYERMONIVS EQU $D020 ; 4x 4 bit: atk, def, spd, spc -W_PLAYERMONLEVEL EQU $D022 -W_PLAYERMONMAXHP EQU $D023 ; (16 bits) -W_PLAYERMONATK EQU $D025 -W_PLAYERMONDEF EQU $D027 -W_PLAYERMONSPEED EQU $D029 -W_PLAYERMONSPECIAL EQU $D02B -W_PLAYERMONPP EQU $D02D - -W_TRAINERCLASS EQU $D031 - -W_ISINBATTLE EQU $D057 ; no battle, this is 0 - ; wild battle, this is 1 - ; trainer battle, this is 2 - -W_PLAYERMONSALIVEFLAGS EQU $D058 ; 6 bit array, 1 if player mon is alive - -W_CUROPPONENT EQU $D059 ; in a wild battle, this is the species of pokemon - ; in a trainer battle, this is the trainer class + $C8 - -W_BATTLETYPE EQU $D05A ; in normal battle, this is 0 - ; in old man battle, this is 1 - ; in safari battle, this is 2 - -W_LONEATTACKNO EQU $D05C ; which entry in LoneAttacks to use -W_GYMLEADERNO EQU $D05C ; it's actually the same thing as ^ -W_TRAINERNO EQU $D05D ; which instance of [youngster, lass, etc] is this? - -W_MOVEMISSED EQU $D05F - -; not entirely sure that all these bits are 100% correct -; Battle Status Byte 1 + ds 2 ; W_ENEMYMONPP + + ds 7 + +W_PLAYERMONNAME: ; d009 + ds 11 + +W_PLAYERMONID: ; d014 + ds 1 + +W_PLAYERMONCURHP: ; d015 + ds 2 + ds 1 +W_PLAYERMONSTATUS: ; d018 +; the status of the player’s current monster + ds 1 +W_PLAYERMONTYPES: ; d019 +W_PLAYERMONTYPE1: ; d019 + ds 1 +W_PLAYERMONTYPE2: ; d01a + ds 1 + ds 1 +W_PLAYERMONMOVES: ; d01c + ds 4 +W_PLAYERMONIVS: ; d020 +; 4x 4 bit: atk, def, spd, spc + ds 2 +W_PLAYERMONLEVEL: ; d022 + ds 1 +W_PLAYERMONMAXHP: ; d023 + ds 2 +W_PLAYERMONATK: ; d025 + ds 2 +W_PLAYERMONDEF: ; d027 + ds 2 +W_PLAYERMONSPEED: ; d029 + ds 2 +W_PLAYERMONSPECIAL: ; d02b + ds 2 +W_PLAYERMONPP: ; d02d + ds 4 + + + +W_TRAINERCLASS: ; d031 + ds 1 + + ds 37 + +W_ISINBATTLE: ; d057 +; no battle, this is 0 +; wild battle, this is 1 +; trainer battle, this is 2 + ds 1 + +W_PLAYERMONSALIVEFLAGS: ; d058 +; 6 bit array, 1 if player mon is alive + ds 1 + +W_CUROPPONENT: ; d059 +; in a wild battle, this is the species of pokemon +; in a trainer battle, this is the trainer class + $C8 + ds 1 + +W_BATTLETYPE: ; d05a +; in normal battle, this is 0 +; in old man battle, this is 1 +; in safari battle, this is 2 + ds 1 + + ds 1 + +W_LONEATTACKNO: ; d05c +; which entry in LoneAttacks to use +W_GYMLEADERNO: ; d05c +; it's actually the same thing as ^ + ds 1 +W_TRAINERNO: ; d05d +; which instance of [youngster, lass, etc] is this? + ds 1 + + ds 1 + +W_MOVEMISSED: ; d05f + ds 1 + + ds 2 + +W_PLAYERBATTSTATUS1: ; d062 ; bit 0 - bide ; bit 1 - thrash / petal dance ; bit 2 - attacking multiple times (e.g. double kick) @@ -421,8 +500,9 @@ W_MOVEMISSED EQU $D05F ; bit 5 - using multi-turn move (e.g. wrap) ; bit 6 - invulnerable to normal attack (using fly/dig) ; bit 7 - confusion + ds 1 -; Battle Status Byte 2 +W_PLAYERBATTSTATUS2: ; d063 ; bit 0 - X Accuracy effect ; bit 1 - protected by "mist" ; bit 2 - focus energy effect @@ -430,355 +510,387 @@ W_MOVEMISSED EQU $D05F ; bit 5 - need to recharge ; bit 6 - rage ; bit 7 - leech seeded + ds 1 -; Battle Status Byte 3 +W_PLAYERBATTSTATUS3: ; d064 ; bit 0 - toxic ; bit 1 - light screen ; bit 2 - reflect ; bit 3 - tranformed + ds 1 + + ds 2 + +W_ENEMYBATTSTATUS1: ; d067 + ds 1 +W_ENEMYBATTSTATUS2: ; d068 + ds 1 +W_ENEMYBATTSTATUS3: ; d069 + ds 1 + + ds 2 + +W_PLAYERTOXICCOUNTER: ; d06c + ds 1 +W_PLAYERDISABLEDMOVE: ; d06d + ds 1 -W_PLAYERBATTSTATUS1 EQU $D062 -W_PLAYERBATTSTATUS2 EQU $D063 -W_PLAYERBATTSTATUS3 EQU $D064 + ds 3 -W_ENEMYBATTSTATUS1 EQU $D067 -W_ENEMYBATTSTATUS2 EQU $D068 -W_ENEMYBATTSTATUS3 EQU $D069 +W_ENEMYTOXICCOUNTER: ; d071 + ds 1 +W_ENEMYDISABLEDMOVE: ; d072 + ds 1 -W_PLAYERTOXICCOUNTER EQU $D06C -W_PLAYERDISABLEDMOVE EQU $D06D + ds 1 -W_ENEMYTOXICCOUNTER EQU $D071 -W_ENEMYDISABLEDMOVE EQU $D072 +W_NUMHITS: ; d074 +; number of hits in attacks like Doubleslap, etc. + ds 1 -W_NUMHITS EQU $D074 ; number of hits in attacks like Doubleslap, etc. + ds 7 -W_ANIMATIONID EQU $D07C ; ID number of the current battle animation +W_ANIMATIONID: ; d07c +; ID number of the current battle animation + ds 1 + + ds 4 ; base coordinates of frame block -W_BASECOORDX EQU $D081 -W_BASECOORDY EQU $D082 +W_BASECOORDX: ; d081 + ds 1 +W_BASECOORDY: ; d082 + ds 1 + + ds 1 + +W_FBTILECOUNTER: ; d084 +; counts how many tiles of the current frame block have been drawn + ds 1 + + ds 1 + +W_SUBANIMFRAMEDELAY: ; d086 +; duration of each frame of the current subanimation in terms of screen refreshes + ds 1 +W_SUBANIMCOUNTER: ; d087 +; counts the number of subentries left in the current subanimation + ds 1 -W_FBTILECOUNTER EQU $D084 ; counts how many tiles of the current frame block have been drawn + ds 1 -W_SUBANIMFRAMEDELAY EQU $D086 ; duration of each frame of the current subanimation in terms of screen refreshes -W_SUBANIMCOUNTER EQU $D087 ; counts the number of subentries left in the current subanimation +W_NUMFBTILES: ; d089 +; number of tiles in current battle animation frame block + ds 1 -W_NUMFBTILES EQU $D089 ; number of tiles in current battle animation frame block + ds 1 -W_SUBANIMTRANSFORM EQU $D08B ; controls what transformations are applied to the subanimation +W_SUBANIMTRANSFORM: ; d08b +; controls what transformations are applied to the subanimation ; 01: flip horizontally and vertically ; 02: flip horizontally and translate downwards 40 pixels ; 03: translate base coordinates of frame blocks, but don't change their internal coordinates or flip their tiles ; 04: reverse the subanimation + ds 1 -W_PBSTOREDREGISTERH EQU $D08C -W_PBSTOREDREGISTERL EQU $D08D -W_PBSTOREDREGISTERD EQU $D08E -W_PBSTOREDREGISTERE EQU $D08F -W_PBSTOREDROMBANK EQU $D092 +W_PBSTOREDREGISTERH: ; d08c + ds 1 +W_PBSTOREDREGISTERL: ; d08d + ds 1 +W_PBSTOREDREGISTERD: ; d08e + ds 1 +W_PBSTOREDREGISTERE: ; d08f + ds 1 + + ds 2 + +W_PBSTOREDROMBANK: ; d092 + ds 1 + + ds 1 -W_SUBANIMADDRPTR EQU $D094 ; the address _of the address_ of the current subanimation entry (2 bytes) +W_SUBANIMADDRPTR: ; d094 +; the address _of the address_ of the current subanimation entry + ds 2 +W_SUBANIMSUBENTRYADDR: ; d096 +; the address of the current subentry of the current subanimation + ds 2 -W_SUBANIMSUBENTRYADDR EQU $D096 ; the address of the current subentry of the current subanimation (2 bytes) + ds 4 -W_FBDESTADDR EQU $D09C ; current destination address in OAM for frame blocks (2 bytes, big endian) +W_FBDESTADDR: ; d09c +; current destination address in OAM for frame blocks (big endian) + ds 2 -W_FBMODE EQU $D09E ; controls how the frame blocks are put together to form frames +W_FBMODE: ; d09e +; controls how the frame blocks are put together to form frames ; specifically, after finishing drawing the frame block, the frame block's mode determines what happens ; 00: clean OAM buffer and delay ; 02: move onto the next frame block with no delay and no cleaning OAM buffer ; 03: delay, but don't clean OAM buffer ; 04: delay, without cleaning OAM buffer, and do not advance [W_FBDESTADDR], so that the next frame block will overwrite this one - ; sprite data is written column by column, each byte contains 8 columns (one for ech bit) ; for 2bpp sprites, pairs of two consecutive bytes (i.e. pairs of consecutive rows of sprite data) ; contain the upper and lower bit of each of the 8 pixels, respectively -SPRITEBUFFERSIZE EQU $188 ; 7 * 7 (tiles) * 8 (bytes per tile) -S_SPRITEBUFFER0 EQU $A000 + 0 * SPRITEBUFFERSIZE -S_SPRITEBUFFER1 EQU $A000 + 1 * SPRITEBUFFERSIZE -S_SPRITEBUFFER2 EQU $A000 + 2 * SPRITEBUFFERSIZE - -W_SPRITECURPOSX EQU $D0A1 -W_SPRITECURPOSY EQU $D0A2 -W_SPRITEWITDH EQU $D0A3 -W_SPRITEHEIGHT EQU $D0A4 -W_SPRITEINPUTCURBYTE EQU $D0A5 ; current input byte -W_SPRITEINPUTBITCOUNTER EQU $D0A6 ; bit offset of last read input bit - -; determines where in the output byte the two bits are placed. Each byte contains four columns (2bpp data) + ds 1 + + +SECTION "Sprite Buffers", SRAM + +SPRITEBUFFERSIZE EQU 7*7 * 8 ; 7 * 7 (tiles) * 8 (bytes per tile) + +S_SPRITEBUFFER0: ; a000 + ds SPRITEBUFFERSIZE +S_SPRITEBUFFER1: ; a188 + ds SPRITEBUFFERSIZE +S_SPRITEBUFFER2: ; a310 + ds SPRITEBUFFERSIZE + + +SECTION "Sprites", WRAMX[$d0a1], BANK[1] + +W_SPRITECURPOSX: ; d0a1 + ds 1 +W_SPRITECURPOSY: ; d0a2 + ds 1 +W_SPRITEWITDH: ; d0a3 + ds 1 +W_SPRITEHEIGHT: ; d0a4 + ds 1 +W_SPRITEINPUTCURBYTE: ; d0a5 +; current input byte + ds 1 +W_SPRITEINPUTBITCOUNTER: ; d0a6 +; bit offset of last read input bit + ds 1 + +W_SPRITEOUTPUTBITOFFSET: ; d0a7; determines where in the output byte the two bits are placed. Each byte contains four columns (2bpp data) ; 3 -> XX000000 1st column ; 2 -> 00XX0000 2nd column ; 1 -> 0000XX00 3rd column ; 0 -> 000000XX 4th column -W_SPRITEOUTPUTBITOFFSET EQU $D0A7 + ds 1 +W_SPRITELOADFLAGS: ; d0a8 ; bit 0 determines used buffer (0 -> $a188, 1 -> $a310) ; bit 1 loading last sprite chunk? (there are at most 2 chunks per load operation) -W_SPRITELOADFLAGS EQU $D0A8 -W_SPRITEUNPACKMODE EQU $D0A9 -W_SPRITEFLIPPED EQU $D0AA - -W_SPRITEINPUTPTR EQU $D0AB ; pointer to next input byte -W_SPRITEOUTPUTPTR EQU $D0AD ; pointer to current output byte -W_SPRITEOUTPUTPTRCACHED EQU $D0AF ; used to revert pointer for different bit offsets -W_SPRITEDECODETABLE0PTR EQU $D0B1 ; pointer to differential decoding table (assuming initial value 0) -W_SPRITEDECODETABLE1PTR EQU $D0B3 ; pointer to differential decoding table (assuming initial value 1) - - -; List type -; used in $D0B6 -W_LISTTYPE EQU $D0B6 - -W_MONHEADER EQU $d0b8 -W_MONHDEXNUM EQU $d0b8 -W_MONHBASESTATS EQU $d0b9 -;W_MONHBASEHP EQU $d0b9 -;W_MONHBASEATTACK EQU $d0ba -;W_MONHBASEDEFENSE EQU $d0bb -W_MONHBASESPEED EQU $d0bc -;W_MONHBASESPECIAL EQU $d0bd -W_MONHTYPES EQU $d0be -W_MONHTYPE1 EQU $d0be -W_MONHTYPE2 EQU $d0bf -W_MONHCATCHRATE EQU $d0c0 -;W_MONHBASEXP EQU $d0c1 -W_MONHSPRITEDIM EQU $d0c2 -W_MONHFRONTSPRITE EQU $d0c3 -W_MONHBACKSPRITE EQU $d0c5 -W_MONHMOVES EQU $d0c7 -;W_MONHMOVE1 EQU $d0c7 -;W_MONHMOVE2 EQU $d0c8 -;W_MONHMOVE3 EQU $d0c9 -;W_MONHMOVE4 EQU $d0ca -W_MONHGROWTHRATE EQU $d0cb -W_MONHLEARNSET EQU $d0cc ; bit field, 7 bytes -;W_MONHPADDING EQU $d0d7 - - - -W_DAMAGE EQU $D0D7 - - -W_CURENEMYLVL EQU $D127 - -W_ISLINKBATTLE EQU $D12B - -W_PRIZE1 EQU $D13D -W_PRIZE2 EQU $D13E -W_PRIZE3 EQU $D13F - -W_PLAYERNAME EQU $D158 ; 11 characters, including null - -W_NUMINPARTY EQU $D163 - -W_PARTYMON1 EQU $D164 -W_PARTYMON2 EQU $D165 -W_PARTYMON3 EQU $D166 -W_PARTYMON4 EQU $D167 -W_PARTYMON5 EQU $D168 -W_PARTYMON6 EQU $D169 -W_PARTYMONEND EQU $D16A - -W_PARTYMON1DATA EQU $D16B -W_PARTYMON1_NUM EQU $D16B -W_PARTYMON1_HP EQU $D16C -W_PARTYMON1_BOXLEVEL EQU $D16E -W_PARTYMON1_STATUS EQU $D16F -W_PARTYMON1_TYPE1 EQU $D170 -W_PARTYMON1_TYPE2 EQU $D171 -W_PARTYMON1_CRATE EQU $D172 -W_PARTYMON1_MOVE1 EQU $D173 -W_PARTYMON1_MOVE2 EQU $D174 -W_PARTYMON1_MOVE3 EQU $D175 -W_PARTYMON1_MOVE4 EQU $D176 -W_PARTYMON1_OTID EQU $D177 -W_PARTYMON1_EXP EQU $D179 -W_PARTYMON1_EVHP EQU $D17C -W_PARTYMON1_EVATTACK EQU $D17E -W_PARTYMON1_EVDEFENSE EQU $D180 -W_PARTYMON1_EVSPEED EQU $D182 -W_PARTYMON1_EVSECIAL EQU $D184 -W_PARTYMON1_IV EQU $D186 -W_PARTYMON1_MOVE1PP EQU $D188 -W_PARTYMON1_MOVE2PP EQU $D189 -W_PARTYMON1_MOVE3PP EQU $D18A -W_PARTYMON1_MOVE4PP EQU $D18B -W_PARTYMON1_LEVEL EQU $D18C -W_PARTYMON1_MAXHP EQU $D18D -W_PARTYMON1_ATACK EQU $D18F -W_PARTYMON1_DEFENSE EQU $D191 -W_PARTYMON1_SPEED EQU $D193 -W_PARTYMON1_SPECIAL EQU $D195 - -W_PARTYMON2DATA EQU $D197 -W_PARTYMON2_NUM EQU $D197 -W_PARTYMON2_HP EQU $D198 -W_PARTYMON2_BOXLEVEL EQU $D19A -W_PARTYMON2_STATUS EQU $D19B -W_PARTYMON2_TYPE1 EQU $D19C -W_PARTYMON2_TYPE2 EQU $D19D -W_PARTYMON2_CRATE EQU $D19E -W_PARTYMON2_MOVE1 EQU $D19F -W_PARTYMON2_MOVE2 EQU $D1A0 -W_PARTYMON2_MOVE3 EQU $D1A1 -W_PARTYMON2_MOVE4 EQU $D1A2 -W_PARTYMON2_OTID EQU $D1A3 -W_PARTYMON2_EXP EQU $D1A5 -W_PARTYMON2_EVHP EQU $D1A8 -W_PARTYMON2_EVATTACK EQU $D1AA -W_PARTYMON2_EVDEFENSE EQU $D1AC -W_PARTYMON2_EVSPEED EQU $D1AE -W_PARTYMON2_EVSECIAL EQU $D1B0 -W_PARTYMON2_IV EQU $D1B2 -W_PARTYMON2_MOVE1PP EQU $D1B4 -W_PARTYMON2_MOVE2PP EQU $D1B5 -W_PARTYMON2_MOVE3PP EQU $D1B6 -W_PARTYMON2_MOVE4PP EQU $D1B7 -W_PARTYMON2_LEVEL EQU $D1B8 -W_PARTYMON2_MAXHP EQU $D1B9 -W_PARTYMON2_ATACK EQU $D1BB -W_PARTYMON2_DEFENSE EQU $D1BD -W_PARTYMON2_SPEED EQU $D1BF -W_PARTYMON2_SPECIAL EQU $D1C1 - -W_PARTYMON3DATA EQU $D1C3 -W_PARTYMON3_NUM EQU $D1C3 -W_PARTYMON3_HP EQU $D1C4 -W_PARTYMON3_BOXLEVEL EQU $D1C6 -W_PARTYMON3_STATUS EQU $D1C7 -W_PARTYMON3_TYPE1 EQU $D1C8 -W_PARTYMON3_TYPE2 EQU $D1C9 -W_PARTYMON3_CRATE EQU $D1CA -W_PARTYMON3_MOVE1 EQU $D1CB -W_PARTYMON3_MOVE2 EQU $D1CC -W_PARTYMON3_MOVE3 EQU $D1CD -W_PARTYMON3_MOVE4 EQU $D1CE -W_PARTYMON3_OTID EQU $D1CF -W_PARTYMON3_EXP EQU $D1D1 -W_PARTYMON3_EVHP EQU $D1D4 -W_PARTYMON3_EVATTACK EQU $D1D6 -W_PARTYMON3_EVDEFENSE EQU $D1D8 -W_PARTYMON3_EVSPEED EQU $D1DA -W_PARTYMON3_EVSECIAL EQU $D1DC -W_PARTYMON3_IV EQU $D1DE -W_PARTYMON3_MOVE1PP EQU $D1E0 -W_PARTYMON3_MOVE2PP EQU $D1E1 -W_PARTYMON3_MOVE3PP EQU $D1E2 -W_PARTYMON3_MOVE4PP EQU $D1E3 -W_PARTYMON3_LEVEL EQU $D1E4 -W_PARTYMON3_MAXHP EQU $D1E5 -W_PARTYMON3_ATACK EQU $D1E7 -W_PARTYMON3_DEFENSE EQU $D1E9 -W_PARTYMON3_SPEED EQU $D1EB -W_PARTYMON3_SPECIAL EQU $D1ED - -W_PARTYMON4DATA EQU $D1EF -W_PARTYMON4_NUM EQU $D1EF -W_PARTYMON4_HP EQU $D1F0 -W_PARTYMON4_BOXLEVEL EQU $D1F2 -W_PARTYMON4_STATUS EQU $D1F3 -W_PARTYMON4_TYPE1 EQU $D1F4 -W_PARTYMON4_TYPE2 EQU $D1F5 -W_PARTYMON4_CRATE EQU $D1F6 -W_PARTYMON4_MOVE1 EQU $D1F7 -W_PARTYMON4_MOVE2 EQU $D1F8 -W_PARTYMON4_MOVE3 EQU $D1F9 -W_PARTYMON4_MOVE4 EQU $D1FA -W_PARTYMON4_OTID EQU $D1FB -W_PARTYMON4_EXP EQU $D1FD -W_PARTYMON4_EVHP EQU $D200 -W_PARTYMON4_EVATTACK EQU $D202 -W_PARTYMON4_EVDEFENSE EQU $D204 -W_PARTYMON4_EVSPEED EQU $D206 -W_PARTYMON4_EVSECIAL EQU $D208 -W_PARTYMON4_IV EQU $D20A -W_PARTYMON4_MOVE1PP EQU $D20C -W_PARTYMON4_MOVE2PP EQU $D20D -W_PARTYMON4_MOVE3PP EQU $D20E -W_PARTYMON4_MOVE4PP EQU $D20F -W_PARTYMON4_LEVEL EQU $D210 -W_PARTYMON4_MAXHP EQU $D211 -W_PARTYMON4_ATACK EQU $D213 -W_PARTYMON4_DEFENSE EQU $D215 -W_PARTYMON4_SPEED EQU $D217 -W_PARTYMON4_SPECIAL EQU $D219 - -W_PARTYMON5DATA EQU $D21B -W_PARTYMON5_NUM EQU $D21B -W_PARTYMON5_HP EQU $D21C -W_PARTYMON5_BOXLEVEL EQU $D21E -W_PARTYMON5_STATUS EQU $D21F -W_PARTYMON5_TYPE1 EQU $D220 -W_PARTYMON5_TYPE2 EQU $D221 -W_PARTYMON5_CRATE EQU $D222 -W_PARTYMON5_MOVE1 EQU $D223 -W_PARTYMON5_MOVE2 EQU $D224 -W_PARTYMON5_MOVE3 EQU $D225 -W_PARTYMON5_MOVE4 EQU $D226 -W_PARTYMON5_OTID EQU $D227 -W_PARTYMON5_EXP EQU $D229 -W_PARTYMON5_EVHP EQU $D22C -W_PARTYMON5_EVATTACK EQU $D22E -W_PARTYMON5_EVDEFENSE EQU $D230 -W_PARTYMON5_EVSPEED EQU $D232 -W_PARTYMON5_EVSECIAL EQU $D234 -W_PARTYMON5_IV EQU $D236 -W_PARTYMON5_MOVE1PP EQU $D238 -W_PARTYMON5_MOVE2PP EQU $D239 -W_PARTYMON5_MOVE3PP EQU $D23A -W_PARTYMON5_MOVE4PP EQU $D23B -W_PARTYMON5_LEVEL EQU $D23C -W_PARTYMON5_MAXHP EQU $D23D -W_PARTYMON5_ATACK EQU $D23F -W_PARTYMON5_DEFENSE EQU $D241 -W_PARTYMON5_SPEED EQU $D243 -W_PARTYMON5_SPECIAL EQU $D245 - -W_PARTYMON6DATA EQU $D247 -W_PARTYMON6_NUM EQU $D247 -W_PARTYMON6_HP EQU $D248 -W_PARTYMON6_BOXLEVEL EQU $D24A -W_PARTYMON6_STATUS EQU $D24B -W_PARTYMON6_TYPE1 EQU $D24C -W_PARTYMON6_TYPE2 EQU $D24D -W_PARTYMON6_CRATE EQU $D24E -W_PARTYMON6_MOVE1 EQU $D24F -W_PARTYMON6_MOVE2 EQU $D250 -W_PARTYMON6_MOVE3 EQU $D251 -W_PARTYMON6_MOVE4 EQU $D252 -W_PARTYMON6_OTID EQU $D253 -W_PARTYMON6_EXP EQU $D255 -W_PARTYMON6_EVHP EQU $D258 -W_PARTYMON6_EVATTACK EQU $D25A -W_PARTYMON6_EVDEFENSE EQU $D25C -W_PARTYMON6_EVSPEED EQU $D25E -W_PARTYMON6_EVSECIAL EQU $D260 -W_PARTYMON6_IV EQU $D262 -W_PARTYMON6_MOVE1PP EQU $D264 -W_PARTYMON6_MOVE2PP EQU $D265 -W_PARTYMON6_MOVE3PP EQU $D266 -W_PARTYMON6_MOVE4PP EQU $D267 -W_PARTYMON6_LEVEL EQU $D268 -W_PARTYMON6_MAXHP EQU $D269 -W_PARTYMON6_ATACK EQU $D26B -W_PARTYMON6_DEFENSE EQU $D26D -W_PARTYMON6_SPEED EQU $D26F -W_PARTYMON6_SPECIAL EQU $D271 - -W_PARTYMON1OT EQU $D273 -W_PARTYMON2OT EQU $D27E -W_PARTYMON3OT EQU $D289 -W_PARTYMON4OT EQU $D294 -W_PARTYMON5OT EQU $D29F -W_PARTYMON6OT EQU $D2AA - -W_PARTYMON1NAME EQU $D2B5 -W_PARTYMON2NAME EQU $D2C0 -W_PARTYMON3NAME EQU $D2CB -W_PARTYMON4NAME EQU $D2D6 -W_PARTYMON5NAME EQU $D2E1 -W_PARTYMON6NAME EQU $D2EC + ds 1 +W_SPRITEUNPACKMODE: ; d0a9 + ds 1 +W_SPRITEFLIPPED: ; d0aa + ds 1 + +W_SPRITEINPUTPTR: ; d0ab +; pointer to next input byte + ds 2 +W_SPRITEOUTPUTPTR: ; d0ad +; pointer to current output byte + ds 2 +W_SPRITEOUTPUTPTRCACHED: ; d0af +; used to revert pointer for different bit offsets + ds 2 +W_SPRITEDECODETABLE0PTR: ; d0b1 +; pointer to differential decoding table (assuming initial value 0) + ds 2 +W_SPRITEDECODETABLE1PTR: ; d0b3 +; pointer to differential decoding table (assuming initial value 1) + ds 2 + + ds 1 + +W_LISTTYPE: ; d0b6 + ds 1 + + ds 1 + +W_MONHEADER: ; d0b8 +W_MONHDEXNUM: ; d0b8 + ds 1 + +W_MONHBASESTATS: ; d0b9 +W_MONHBASEHP: ; d0b9 + ds 1 +W_MONHBASEATTACK: ; d0ba + ds 1 +W_MONHBASEDEFENSE: ; d0bb + ds 1 +W_MONHBASESPEED: ; d0bc + ds 1 +W_MONHBASESPECIAL: ; d0bd + ds 1 + +W_MONHTYPES: ; d0be +W_MONHTYPE1: ; d0be + ds 1 +W_MONHTYPE2: ; d0bf + ds 1 + +W_MONHCATCHRATE: ; d0c0 + ds 1 +W_MONHBASEXP: ; d0c1 + ds 1 +W_MONHSPRITEDIM: ; d0c2 + ds 1 +W_MONHFRONTSPRITE: ; d0c3 + ds 2 +W_MONHBACKSPRITE: ; d0c5 + ds 2 + +W_MONHMOVES: ; d0c7 + ds 4 + +W_MONHGROWTHRATE: ; d0cb + ds 1 + +W_MONHLEARNSET: ; d0cc +; bit field + ds 7 + + ds 4 + +W_MONHPADDING: ; d0d7 + + +W_DAMAGE: ; d0d7 + ds 1 + + ds 79 + +W_CURENEMYLVL: ; d127 + ds 1 + + ds 3 + +W_ISLINKBATTLE: ; d12b + ds 1 + + ds 17 + +W_PRIZE1: ; d13d + ds 1 +W_PRIZE2: ; d13e + ds 1 +W_PRIZE3: ; d13f + ds 1 + + ds 24 + +W_PLAYERNAME: ; d158 + ds 11 + +W_NUMINPARTY: ; d163 + ds 1 +W_PARTYMON1: ; d164 + ds 1 +W_PARTYMON2: ; d165 + ds 1 +W_PARTYMON3: ; d166 + ds 1 +W_PARTYMON4: ; d167 + ds 1 +W_PARTYMON5: ; d168 + ds 1 +W_PARTYMON6: ; d169 + ds 1 +W_PARTYMONEND: ; d16a + ds 1 + +W_PARTYMON1DATA: ; d16b +W_PARTYMON1_NUM: ; d16b + ds 1 +W_PARTYMON1_HP: ; d16c + ds 2 +W_PARTYMON1_BOXLEVEL: ; d16e + ds 1 +W_PARTYMON1_STATUS: ; d16f + ds 1 +W_PARTYMON1_TYPE1: ; d170 + ds 1 +W_PARTYMON1_TYPE2: ; d171 + ds 1 +W_PARTYMON1_CRATE: ; d172 + ds 1 +W_PARTYMON1_MOVE1: ; d173 + ds 1 +W_PARTYMON1_MOVE2: ; d174 + ds 1 +W_PARTYMON1_MOVE3: ; d175 + ds 1 +W_PARTYMON1_MOVE4: ; d176 + ds 1 +W_PARTYMON1_OTID: ; d177 + ds 2 +W_PARTYMON1_EXP: ; d179 + ds 3 +W_PARTYMON1_EVHP: ; d17c + ds 2 +W_PARTYMON1_EVATTACK: ; d17e + ds 2 +W_PARTYMON1_EVDEFENSE: ; d180 + ds 2 +W_PARTYMON1_EVSPEED: ; d182 + ds 2 +W_PARTYMON1_EVSECIAL: ; d184 + ds 2 +W_PARTYMON1_IV: ; d186 + ds 2 +W_PARTYMON1_MOVE1PP: ; d188 + ds 1 +W_PARTYMON1_MOVE2PP: ; d189 + ds 1 +W_PARTYMON1_MOVE3PP: ; d18a + ds 1 +W_PARTYMON1_MOVE4PP: ; d18b + ds 1 +W_PARTYMON1_LEVEL: ; d18c + ds 1 +W_PARTYMON1_MAXHP: ; d18d + ds 2 +W_PARTYMON1_ATACK: ; d18f + ds 2 +W_PARTYMON1_DEFENSE: ; d191 + ds 2 +W_PARTYMON1_SPEED: ; d193 + ds 2 +W_PARTYMON1_SPECIAL: ; d195 + ds 2 + +W_PARTYMON2DATA: ; d197 + ds 44 +W_PARTYMON3DATA: ; d1c3 + ds 44 +W_PARTYMON4DATA: ; d1ef + ds 44 +W_PARTYMON5DATA: ; d21b + ds 44 +W_PARTYMON6DATA: ; d247 + ds 44 + +W_PARTYMON1OT: ; d273 + ds 11 +W_PARTYMON2OT: ; d27e + ds 11 +W_PARTYMON3OT: ; d289 + ds 11 +W_PARTYMON4OT: ; d294 + ds 11 +W_PARTYMON5OT: ; d29f + ds 11 +W_PARTYMON6OT: ; d2aa + ds 11 + +W_PARTYMON1NAME: ; d2b5 + ds 11 +W_PARTYMON2NAME: ; d2c0 + ds 11 +W_PARTYMON3NAME: ; d2cb + ds 11 +W_PARTYMON4NAME: ; d2d6 + ds 11 +W_PARTYMON5NAME: ; d2e1 + ds 11 +W_PARTYMON6NAME: ; d2ec + ds 11 SECTION "Pokedex", WRAMX[$d2f7], BANK[1] @@ -792,59 +904,21 @@ wPokedexSeen: ; d30a wPokedexSeenEnd: -;number of items in bag -W_NUMBAGITEMS EQU $D31D -; BAGITEM01 is an item id -; BAGCOUNT01 is how many of this item -W_BAGITEM01 EQU $D31E -W_BAGITEM01QTY EQU $D31F -W_BAGITEM02 EQU $D320 -W_BAGITEM02QTY EQU $D321 -W_BAGITEM03 EQU $D322 -W_BAGITEM03QTY EQU $D323 -W_BAGITEM04 EQU $D324 -W_BAGITEM04QTY EQU $D325 -W_BAGITEM05 EQU $D326 -W_BAGITEM05QTY EQU $D327 -W_BAGITEM06 EQU $D328 -W_BAGITEM06QTY EQU $D329 -W_BAGITEM07 EQU $D32A -W_BAGITEM07QTY EQU $D32B -W_BAGITEM08 EQU $D32C -W_BAGITEM08QTY EQU $D32D -W_BAGITEM09 EQU $D32E -W_BAGITEM09QTY EQU $D32F -W_BAGITEM10 EQU $D330 -W_BAGITEM10QTY EQU $D331 -W_BAGITEM11 EQU $D332 -W_BAGITEM11QTY EQU $D333 -W_BAGITEM12 EQU $D334 -W_BAGITEM12QTY EQU $D335 -W_BAGITEM13 EQU $D336 -W_BAGITEM13QTY EQU $D337 -W_BAGITEM14 EQU $D338 -W_BAGITEM14QTY EQU $D339 -W_BAGITEM15 EQU $D33A -W_BAGITEM15QTY EQU $D33B -W_BAGITEM16 EQU $D33C -W_BAGITEM16QTY EQU $D33D -W_BAGITEM17 EQU $D33E -W_BAGITEM17QTY EQU $D33F -W_BAGITEM18 EQU $D340 -W_BAGITEM18QTY EQU $D341 -W_BAGITEM19 EQU $D342 -W_BAGITEM19QTY EQU $D343 -W_BAGITEM20 EQU $D344 -W_BAGITEM20QTY EQU $D345 +wNumBagItems: ; d31d + ds 1 +wBagItems: ; d31e +; item, quantity + ds 20 * 2 + ds 1 ; end ; money is in decimal -W_PLAYERMONEY3 EQU $D347 -W_PLAYERMONEY2 EQU $D348 -W_PLAYERMONEY1 EQU $D349 +wPlayerMoney: ; d347 + ds 3 -W_RIVALNAME EQU $D34A ; 11 characters, including null +W_RIVALNAME: ; d34a + ds 11 -W_OPTIONS EQU $D355 +W_OPTIONS: ; d355 ; bit 7 = battle animation ; 0: On ; 1: Off @@ -855,13 +929,22 @@ W_OPTIONS EQU $D355 ; 1: Fast ; 3: Medium ; 5: Slow + ds 1 -W_OBTAINEDBADGES EQU $D356 +W_OBTAINEDBADGES: ; d356 + ds 1 -W_PLAYERIDHI EQU $D359 -W_PLAYERIDLO EQU $D35A + ds 2 -W_CURMAP EQU $D35E +wPlayerID: ; d359 + ds 2 + + ds 3 + +W_CURMAP: ; d35e + ds 1 + + ds 2 W_YCOORD EQU $D361 ; player’s position on the current map W_XCOORD EQU $D362 @@ -899,122 +982,32 @@ W_TILESETCOLLISIONPTR EQU $D530 ; list of all walkable tiles W_TILESETTALKINGOVERTILES EQU $D532 ; 3 bytes W_GRASSTILE EQU $D535 -;number of items in box -W_NUMBOXITEMS EQU $D53A -; BOXITEM01 is an item id -; BOXITEM01QTY is how many of this item -W_BOXITEM01 EQU $D53B -W_BOXITEM01QTY EQU $D53C -W_BOXITEM02 EQU $D53D -W_BOXITEM02QTY EQU $D53E -W_BOXITEM03 EQU $D53F -W_BOXITEM03QTY EQU $D540 -W_BOXITEM04 EQU $D541 -W_BOXITEM04QTY EQU $D542 -W_BOXITEM05 EQU $D543 -W_BOXITEM05QTY EQU $D544 -W_BOXITEM06 EQU $D545 -W_BOXITEM06QTY EQU $D546 -W_BOXITEM07 EQU $D547 -W_BOXITEM07QTY EQU $D548 -W_BOXITEM08 EQU $D549 -W_BOXITEM08QTY EQU $D54A -W_BOXITEM09 EQU $D54B -W_BOXITEM09QTY EQU $D54C -W_BOXITEM10 EQU $D54D -W_BOXITEM10QTY EQU $D54E -W_BOXITEM11 EQU $D54F -W_BOXITEM11QTY EQU $D550 -W_BOXITEM12 EQU $D551 -W_BOXITEM12QTY EQU $D552 -W_BOXITEM13 EQU $D553 -W_BOXITEM13QTY EQU $D554 -W_BOXITEM14 EQU $D555 -W_BOXITEM14QTY EQU $D556 -W_BOXITEM15 EQU $D557 -W_BOXITEM15QTY EQU $D558 -W_BOXITEM16 EQU $D559 -W_BOXITEM16QTY EQU $D55A -W_BOXITEM17 EQU $D55B -W_BOXITEM17QTY EQU $D55C -W_BOXITEM18 EQU $D55D -W_BOXITEM18QTY EQU $D55E -W_BOXITEM19 EQU $D55F -W_BOXITEM19QTY EQU $D560 -W_BOXITEM20 EQU $D561 -W_BOXITEM20QTY EQU $D562 -W_BOXITEM21 EQU $D563 -W_BOXITEM21QTY EQU $D564 -W_BOXITEM22 EQU $D565 -W_BOXITEM22QTY EQU $D566 -W_BOXITEM23 EQU $D567 -W_BOXITEM23QTY EQU $D568 -W_BOXITEM24 EQU $D569 -W_BOXITEM24QTY EQU $D56A -W_BOXITEM25 EQU $D56B -W_BOXITEM25QTY EQU $D56C -W_BOXITEM26 EQU $D56D -W_BOXITEM26QTY EQU $D56E -W_BOXITEM27 EQU $D56F -W_BOXITEM27QTY EQU $D570 -W_BOXITEM28 EQU $D571 -W_BOXITEM28QTY EQU $D572 -W_BOXITEM29 EQU $D573 -W_BOXITEM29QTY EQU $D574 -W_BOXITEM30 EQU $D575 -W_BOXITEM30QTY EQU $D576 -W_BOXITEM31 EQU $D577 -W_BOXITEM31QTY EQU $D578 -W_BOXITEM32 EQU $D579 -W_BOXITEM32QTY EQU $D57A -W_BOXITEM33 EQU $D57B -W_BOXITEM33QTY EQU $D57C -W_BOXITEM34 EQU $D57D -W_BOXITEM34QTY EQU $D57E -W_BOXITEM35 EQU $D57F -W_BOXITEM35QTY EQU $D580 -W_BOXITEM36 EQU $D581 -W_BOXITEM36QTY EQU $D582 -W_BOXITEM37 EQU $D583 -W_BOXITEM37QTY EQU $D584 -W_BOXITEM38 EQU $D585 -W_BOXITEM38QTY EQU $D586 -W_BOXITEM39 EQU $D587 -W_BOXITEM39QTY EQU $D588 -W_BOXITEM40 EQU $D589 -W_BOXITEM40QTY EQU $D58A -W_BOXITEM41 EQU $D58B -W_BOXITEM41QTY EQU $D58C -W_BOXITEM42 EQU $D58D -W_BOXITEM42QTY EQU $D58E -W_BOXITEM43 EQU $D58F -W_BOXITEM43QTY EQU $D590 -W_BOXITEM44 EQU $D591 -W_BOXITEM44QTY EQU $D592 -W_BOXITEM45 EQU $D593 -W_BOXITEM45QTY EQU $D594 -W_BOXITEM46 EQU $D595 -W_BOXITEM46QTY EQU $D596 -W_BOXITEM47 EQU $D597 -W_BOXITEM47QTY EQU $D598 -W_BOXITEM48 EQU $D599 -W_BOXITEM48QTY EQU $D59A -W_BOXITEM49 EQU $D59B -W_BOXITEM49QTY EQU $D59C -W_BOXITEM50 EQU $D59D -W_BOXITEM50QTY EQU $D59E -;box end of list $D59F + +SECTION "Items", WRAMX[$d53a], BANK[1] + +wNumBoxItems: ; d53a + ds 1 +wBoxItems: ; d53b +; item, quantity + ds 50 * 2 + ds 1 ; end + + ds 4 ; coins are in decimal -W_PLAYERCOINS1 EQU $D5A4 -W_PLAYERCOINS2 EQU $D5A5 -W_MISSABLEOBJECTFLAGS EQU $D5A6 ; $20 bytes, bit array of missable objects. bit 1 = removed +wPlayerCoins: ; d5a4 + ds 2 + +W_MISSABLEOBJECTFLAGS: ; d5a6 +; bit array of missable objects. set = removed + ds 40 +W_MISSABLEOBJECTLIST: ; d5ce ; each entry consists of 2 bytes ; * the sprite ID (depending on the current map) ; * the missable object index (global, used for W_MISSABLEOBJECTFLAGS) ; terminated with $FF -W_MISSABLEOBJECTLIST EQU $D5CE + ds 17 * 2 W_GAMEPROGRESSFLAGS EQU $D5F0 ; $c8 bytes W_OAKSLABCURSCRIPT EQU $D5F0 |