shithub: pokered

Download patch

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