ref: 4f527b7eef8c33060ddc9f990966c12d3d0d85bc
parent: 516dbd1aaec669d27db253c3e74bf7d5f90eaf8d
author: yenatch <yenatch@gmail.com>
date: Sat Dec 7 23:49:40 EST 2013
more wram labels
--- a/main.asm
+++ b/main.asm
@@ -490,7 +490,7 @@
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 @@
jp c,OverworldLoop
.noCollision
ld a,$08
- ld [W_WALKCOUNTER],a
+ ld [wWalkCounter],a
jr .moveAhead2
.moveAhead
ld a,[$d736]
@@ -717,7 +717,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
.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 @@
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 @@
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 @@
; 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 @@
; 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 @@
; 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 @@
; 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 @@
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 @@
; 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 @@
; 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 @@
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 @@
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 @@
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 @@
.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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
; 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 @@
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 @@
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 @@
ld [$cf0a],a
.skipSettingFlag1
call AddAmountSoldToMoney
- ld hl,W_NUMBAGITEMS
+ ld hl,wNumBagItems
call RemoveItemFromInventory
jp .sellMenuLoop
.unsellableItem
@@ -16225,7 +16225,7 @@
.buyItem
call .isThereEnoughMoney
jr c,.notEnoughMoney
- ld hl,W_NUMBAGITEMS
+ ld hl,wNumBagItems
call AddItemToInventory
jr nc,.bagFull
call SubtractAmountPaidFromMoney
@@ -16250,7 +16250,7 @@
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 @@
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 @@
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 @@
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_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,7 +17934,7 @@
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
@@ -17941,7 +17941,7 @@
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 @@
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_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,7 +17988,7 @@
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
@@ -17995,7 +17995,7 @@
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 @@
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_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 @@
PlayBattleMusic: ; 0x90c6
xor a
- ld [W_CURCHANNELPOINTER], a
+ ld [wMusicChannelPointer], a
ld [$d083], a
dec a
ld [$c0ee], a
@@ -20115,7 +20115,7 @@
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 @@
; 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 @@
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 @@
; 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 @@
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 @@
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 @@
; 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 @@
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 @@
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,10 +30971,10 @@
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
@@ -30981,11 +30981,11 @@
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 @@
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 @@
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 @@
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 @@
inc a
jr z,.tossZeroItems
.skipAskingQuantity
- ld hl,W_NUMBAGITEMS
+ ld hl,wNumBagItems
call TossItem
.tossZeroItems
jp ItemMenuLoop
@@ -33175,7 +33175,7 @@
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 @@
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 @@
; 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 @@
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 @@
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_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 @@
.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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
.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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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
--- a/wram.asm
+++ b/wram.asm
@@ -313,106 +313,185 @@
; ID used by DisplayListMenuID
ds 1
+ ds 48
+wWalkCounter: ; cfc5
+; walk animation counter
+ ds 1
-W_WALKCOUNTER EQU $CFC5 ; walk animation counter
+ ds 1
-W_CURCHANNELPOINTER EQU $CFC7 ; (the current music channel pointer - $4000) / 3
+wMusicChannelPointer: ; cfc7
+; (the current music channel address - $4000) / 3
+ ds 1
-W_ENEMYMOVENUM EQU $CFCC
-W_ENEMYMOVEEFFECT EQU $CFCD
-W_ENEMYMOVEPOWER EQU $CFCE
-W_ENEMYMOVETYPE EQU $CFCF
-W_ENEMYMOVEACCURACY EQU $CFD0
-W_ENEMYMOVEMAXPP EQU $CFD1
+ ds 4
-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_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 EQU $CFD8
+W_ENEMYMONID: ; cfd8
+ ds 1
-W_ENEMYMONNAME EQU $CFDA
+ ds 1
-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
+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
+ ds 2 ; W_ENEMYMONPP
-W_TRAINERCLASS EQU $D031
+ ds 7
-W_ISINBATTLE EQU $D057 ; no battle, this is 0
- ; wild battle, this is 1
- ; trainer battle, this is 2
+W_PLAYERMONNAME: ; d009
+ ds 11
-W_PLAYERMONSALIVEFLAGS EQU $D058 ; 6 bit array, 1 if player mon is alive
+W_PLAYERMONID: ; d014
+ ds 1
-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_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_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
+W_TRAINERCLASS: ; d031
+ ds 1
-; not entirely sure that all these bits are 100% correct
-; Battle Status Byte 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 @@
; 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,357 +510,389 @@
; 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
-W_PLAYERBATTSTATUS1 EQU $D062
-W_PLAYERBATTSTATUS2 EQU $D063
-W_PLAYERBATTSTATUS3 EQU $D064
+ ds 2
-W_ENEMYBATTSTATUS1 EQU $D067
-W_ENEMYBATTSTATUS2 EQU $D068
-W_ENEMYBATTSTATUS3 EQU $D069
+W_ENEMYBATTSTATUS1: ; d067
+ ds 1
+W_ENEMYBATTSTATUS2: ; d068
+ ds 1
+W_ENEMYBATTSTATUS3: ; d069
+ ds 1
-W_PLAYERTOXICCOUNTER EQU $D06C
-W_PLAYERDISABLEDMOVE EQU $D06D
+ ds 2
-W_ENEMYTOXICCOUNTER EQU $D071
-W_ENEMYDISABLEDMOVE EQU $D072
+W_PLAYERTOXICCOUNTER: ; d06c
+ ds 1
+W_PLAYERDISABLEDMOVE: ; d06d
+ ds 1
-W_NUMHITS EQU $D074 ; number of hits in attacks like Doubleslap, etc.
+ ds 3
-W_ANIMATIONID EQU $D07C ; ID number of the current battle animation
+W_ENEMYTOXICCOUNTER: ; d071
+ ds 1
+W_ENEMYDISABLEDMOVE: ; d072
+ ds 1
+ ds 1
+
+W_NUMHITS: ; d074
+; number of hits in attacks like Doubleslap, etc.
+ ds 1
+
+ ds 7
+
+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
-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_FBTILECOUNTER: ; d084
+; counts how many tiles of the current frame block have been drawn
+ 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_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
+
+ ds 1
+
+W_NUMFBTILES: ; d089
+; number of tiles in current battle animation frame block
+ ds 1
+
+ ds 1
+
+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
-W_SUBANIMADDRPTR EQU $D094 ; the address _of the address_ of the current subanimation entry (2 bytes)
+ ds 2
-W_SUBANIMSUBENTRYADDR EQU $D096 ; the address of the current subentry of the current subanimation (2 bytes)
+W_PBSTOREDROMBANK: ; d092
+ ds 1
-W_FBDESTADDR EQU $D09C ; current destination address in OAM for frame blocks (2 bytes, big endian)
+ ds 1
-W_FBMODE EQU $D09E ; controls how the frame blocks are put together to form frames
+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
+
+ ds 4
+
+W_FBDESTADDR: ; d09c
+; current destination address in OAM for frame blocks (big endian)
+ ds 2
+
+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
+ ds 1
-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)
+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
+ ds 1
+W_SPRITEUNPACKMODE: ; d0a9
+ ds 1
+W_SPRITEFLIPPED: ; d0aa
+ ds 1
-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)
+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
-; List type
-; used in $D0B6
-W_LISTTYPE EQU $D0B6
+W_LISTTYPE: ; d0b6
+ ds 1
-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
+ 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_DAMAGE EQU $D0D7
+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_CURENEMYLVL EQU $D127
+W_MONHMOVES: ; d0c7
+ ds 4
-W_ISLINKBATTLE EQU $D12B
+W_MONHGROWTHRATE: ; d0cb
+ ds 1
-W_PRIZE1 EQU $D13D
-W_PRIZE2 EQU $D13E
-W_PRIZE3 EQU $D13F
+W_MONHLEARNSET: ; d0cc
+; bit field
+ ds 7
-W_PLAYERNAME EQU $D158 ; 11 characters, including null
+ ds 4
-W_NUMINPARTY EQU $D163
+W_MONHPADDING: ; d0d7
-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_DAMAGE: ; d0d7
+ ds 1
-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
+ ds 79
-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_CURENEMYLVL: ; d127
+ ds 1
-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
+ ds 3
-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_ISLINKBATTLE: ; d12b
+ ds 1
-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
+ ds 17
-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_PRIZE1: ; d13d
+ ds 1
+W_PRIZE2: ; d13e
+ ds 1
+W_PRIZE3: ; d13f
+ ds 1
-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 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]
wPokedexOwned: ; d2f7
@@ -792,59 +904,21 @@
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,14 +929,23 @@
; 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
W_YBLOCKCOORD EQU $D363 ; player's y position (by block)
@@ -899,122 +982,32 @@
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