summaryrefslogtreecommitdiff
path: root/wram.asm
diff options
context:
space:
mode:
Diffstat (limited to 'wram.asm')
-rwxr-xr-xwram.asm402
1 files changed, 253 insertions, 149 deletions
diff --git a/wram.asm b/wram.asm
index 15ed6461..f4c2e262 100755
--- a/wram.asm
+++ b/wram.asm
@@ -50,6 +50,7 @@ battle_struct: MACRO
\1Moves:: ds NUM_MOVES
\1DVs:: ds 2
\1Level:: db
+\1Stats::
\1MaxHP:: dw
\1Attack:: dw
\1Defense:: dw
@@ -228,7 +229,39 @@ wSpriteStateData1:: ; c100
; C1xD
; C1xE
; C1xF
- ds $10 * $10
+spritestatedata1: MACRO
+\1SpriteStateData1::
+\1PictureID:: db
+\1MovementStatus:: db
+\1SpriteImageIdx:: db
+\1YStepVector:: db
+\1YPixels:: db
+\1XStepVector:: db
+\1XPixels:: db
+\1IntraAnimFrameCounter:: db
+\1AnimFrameCounter:: db
+\1FacingDirection:: db
+ ds 6
+\1SpriteStateData1End::
+endm
+
+ spritestatedata1 Player
+ spritestatedata1 Sprite01
+ spritestatedata1 Sprite02
+ spritestatedata1 Sprite03
+ spritestatedata1 Sprite04
+ spritestatedata1 Sprite05
+ spritestatedata1 Sprite06
+ spritestatedata1 Sprite07
+ spritestatedata1 Sprite08
+ spritestatedata1 Sprite09
+ spritestatedata1 Sprite10
+ spritestatedata1 Sprite11
+ spritestatedata1 Sprite12
+ spritestatedata1 Sprite13
+ spritestatedata1 Sprite14
+ spritestatedata1 Sprite15
+ ; ds $10 * $10
;SECTION "Sprite State Data 2", WRAM0[$c200]
@@ -253,7 +286,40 @@ wSpriteStateData2:: ; c200
; C2xD
; C2xE: sprite image base offset (in video ram, player always has value 1, used to compute c1x2)
; C2xF
- ds $10 * $10
+spritestatedata2: MACRO
+\1SpriteStateData2::
+\1WalkAnimationCounter:: db
+ ds 1
+\1YDisplacement:: db
+\1XDisplacement:: db
+\1MapY:: db
+\1MapX:: db
+\1MovementByte1:: db
+\1GrassPriority:: db
+\1MovementDelay:: db
+ ds 5
+\1SpriteImageBaseOffset:: db
+ ds 1
+\1SpriteStateData2End::
+endm
+
+ spritestatedata2 Player
+ spritestatedata2 Sprite01
+ spritestatedata2 Sprite02
+ spritestatedata2 Sprite03
+ spritestatedata2 Sprite04
+ spritestatedata2 Sprite05
+ spritestatedata2 Sprite06
+ spritestatedata2 Sprite07
+ spritestatedata2 Sprite08
+ spritestatedata2 Sprite09
+ spritestatedata2 Sprite10
+ spritestatedata2 Sprite11
+ spritestatedata2 Sprite12
+ spritestatedata2 Sprite13
+ spritestatedata2 Sprite14
+ spritestatedata2 Sprite15
+ ; ds $10 * $10
wSpriteDataEnd::
@@ -1854,7 +1920,7 @@ wPlayerNumAttacksLeft::
; when the player is attacking multiple times, the number of attacks left
ds 1
-W_PLAYERCONFUSEDCOUNTER:: ; d06b
+wPlayerConfusedCounter:: ; d06b
ds 1
wPlayerToxicCounter:: ; d06c
@@ -1870,7 +1936,7 @@ wEnemyNumAttacksLeft:: ; d06f
; when the enemy is attacking multiple times, the number of attacks left
ds 1
-W_ENEMYCONFUSEDCOUNTER:: ; d070
+wEnemyConfusedCounter:: ; d070
ds 1
wEnemyToxicCounter:: ; d071
@@ -1908,6 +1974,11 @@ wObjectToShow:: ; d07a
ds 1
+wDefaultMap:: ; d07c
+; the map you will start at when the debug bit is set
+
+wMenuItemOffset:: ; d07c
+
wAnimationID:: ; d07c
; ID number of the current battle animation
ds 1
@@ -2078,50 +2149,50 @@ wSlideMonUpBottomRowLeftTile:: ; d09f
wDisableVBlankWYUpdate:: ds 1 ; if non-zero, don't update WY during V-blank
-W_SPRITECURPOSX:: ; d0a1
+wSpriteCurPosX:: ; d0a1
ds 1
-W_SPRITECURPOSY:: ; d0a2
+wSpriteCurPosY:: ; d0a2
ds 1
-W_SPRITEWITDH:: ; d0a3
+wSpriteWidth:: ; d0a3
ds 1
-W_SPRITEHEIGHT:: ; d0a4
+wSpriteHeight:: ; d0a4
ds 1
-W_SPRITEINPUTCURBYTE:: ; d0a5
+wSpriteInputCurByte:: ; d0a5
; current input byte
ds 1
-W_SPRITEINPUTBITCOUNTER:: ; d0a6
+wSpriteInputBitCounter:: ; 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)
+wSpriteOutputBitOffset:: ; 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
ds 1
-W_SPRITELOADFLAGS:: ; d0a8
+wSpriteLoadFlags:: ; 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)
ds 1
-W_SPRITEUNPACKMODE:: ; d0a9
+wSpriteUnpackMode:: ; d0a9
ds 1
wSpriteFlipped:: ; d0aa
ds 1
-W_SPRITEINPUTPTR:: ; d0ab
+wSpriteInputPtr:: ; d0ab
; pointer to next input byte
ds 2
-W_SPRITEOUTPUTPTR:: ; d0ad
+wSpriteOutputPtr:: ; d0ad
; pointer to current output byte
ds 2
-W_SPRITEOUTPUTPTRCACHED:: ; d0af
+wSpriteOutputPtrCached:: ; d0af
; used to revert pointer for different bit offsets
ds 2
-W_SPRITEDECODETABLE0PTR:: ; d0b1
+wSpriteDecodeTable0Ptr:: ; d0b1
; pointer to differential decoding table (assuming initial value 0)
ds 2
-W_SPRITEDECODETABLE1PTR:: ; d0b3
+wSpriteDecodeTable1Ptr:: ; d0b3
; pointer to differential decoding table (assuming initial value 1)
ds 2
@@ -2141,7 +2212,7 @@ wMonHIndex:: ; d0b8
ds 1
wMonHBaseStats:: ; d0b9
-W_MONHBASEHP:: ; d0b9
+wMonHBaseHP:: ; d0b9
ds 1
wMonHBaseAttack:: ; d0ba
ds 1
@@ -2227,6 +2298,8 @@ wFirstMonsNotOutYet:: ; d11d
; which will be the first mon sent out.
ds 1
+wPokeBallCaptureCalcTemp:: ; d11e
+
; lower nybble: number of shakes
; upper nybble: number of animations to play
wPokeBallAnimData:: ; d11e
@@ -2270,7 +2343,7 @@ wIsKeyItem:: ; d124
wTextBoxID:: ; d125
ds 1
-wd126:: ds 1 ; not exactly sure what this is used for, but it seems to be used as a multipurpose temp flag value
+wCurrentMapScriptFlags:: ds 1 ; not exactly sure what this is used for, but it seems to be used as a multipurpose temp flag value
wCurEnemyLVL:: ; d127
ds 1
@@ -2438,7 +2511,7 @@ wNumBagItems:: ; d31d
ds 1
wBagItems:: ; d31e
; item, quantity
- ds 20 * 2
+ ds BAG_ITEM_CAPACITY * 2
ds 1 ; end
wPlayerMoney:: ; d347
@@ -2461,7 +2534,7 @@ wOptions:: ; d355
ds 1
wObtainedBadges:: ; d356
- ds 1
+ flag_array 8
ds 1
@@ -2524,20 +2597,20 @@ wCurMapWidth:: ; d369
; blocks
ds 1
-W_MAPDATAPTR:: ; d36a
+wMapDataPtr:: ; d36a
ds 2
wMapTextPtr:: ; d36c
ds 2
-W_MAPSCRIPTPTR:: ; d36e
+wMapScriptPtr:: ; d36e
ds 2
-W_MAPCONNECTIONS:: ; d370
+wMapConnections:: ; d370
; connection byte
ds 1
-W_MAPCONN1PTR:: ; d371
+wMapConn1Ptr:: ; d371
ds 1
wNorthConnectionStripSrc:: ; d372
@@ -2561,7 +2634,7 @@ wNorthConnectedMapXAlignment:: ; d379
wNorthConnectedMapViewPointer:: ; d37a
ds 2
-W_MAPCONN2PTR:: ; d37c
+wMapConn2Ptr:: ; d37c
ds 1
wSouthConnectionStripSrc:: ; d37d
@@ -2585,7 +2658,7 @@ wSouthConnectedMapXAlignment:: ; d384
wSouthConnectedMapViewPointer:: ; d385
ds 2
-W_MAPCONN3PTR:: ; d387
+wMapConn3Ptr:: ; d387
ds 1
wWestConnectionStripSrc:: ; d388
@@ -2609,7 +2682,7 @@ wWestConnectedMapXAlignment:: ; d38f
wWestConnectedMapViewPointer:: ; d390
ds 2
-W_MAPCONN4PTR:: ; d392
+wMapConn4Ptr:: ; d392
ds 1
wEastConnectionStripSrc:: ; d393
@@ -2793,7 +2866,7 @@ wPlayerDirection:: ; d52a
wTilesetBank:: ; d52b
ds 1
-W_TILESETBLOCKSPTR:: ; d52c
+wTileSetBlocksPtr:: ; d52c
; maps blocks (4x4 tiles) to tiles
ds 2
@@ -2804,7 +2877,7 @@ wTilesetCollisionPtr:: ; d530
; list of all walkable tiles
ds 2
-W_TILESETTALKINGOVERTILES:: ; d532
+wTileSetTalkingOverTiles:: ; d532
ds 3
wGrassTile:: ; d535
@@ -2816,7 +2889,7 @@ wNumBoxItems:: ; d53a
ds 1
wBoxItems:: ; d53b
; item, quantity
- ds 50 * 2
+ ds PC_ITEM_CAPACITY * 2
ds 1 ; end
wCurrentBoxNum:: ; d5a0
@@ -2853,217 +2926,217 @@ wMissableObjectList:: ; d5ce
wGameProgressFlags:: ; d5e9
; $c8 bytes
-W_OAKSLABCURSCRIPT:: ; d5e9
+wOaksLabCurScript:: ; d5e9
ds 1
-W_PALLETTOWNCURSCRIPT:: ; d5f0
+wPalletTownCurScript:: ; d5f0
ds 1
ds 1
-W_BLUESHOUSECURSCRIPT:: ; d5f2
+wBluesHouseCurScript:: ; d5f2
ds 1
-W_VIRIDIANCITYCURSCRIPT:: ; d5f3
+wViridianCityCurScript:: ; d5f3
ds 1
ds 2
-W_PEWTERCITYCURSCRIPT:: ; d5f6
+wPewterCityCurScript:: ; d5f6
ds 1
-W_ROUTE3CURSCRIPT:: ; d5f7
+wRoute3CurScript:: ; d5f7
ds 1
-W_ROUTE4CURSCRIPT:: ; d5f8
+wRoute4CurScript:: ; d5f8
ds 1
-W_FANCLUBCURSCRIPT:: ; d5f9
+wFanClubCurScript:: ; d5f9
ds 1
-W_VIRIDIANGYMCURSCRIPT:: ; d5fa
+wViridianGymCurScript:: ; d5fa
ds 1
-W_PEWTERGYMCURSCRIPT:: ; d5fb
+wPewterGymCurScript:: ; d5fb
ds 1
-W_CERULEANGYMCURSCRIPT:: ; d5fc
+wCeruleanGymCurScript:: ; d5fc
ds 1
-W_VERMILIONGYMCURSCRIPT:: ; d5fd
+wVermilionGymCurScript:: ; d5fd
ds 1
-W_CELADONGYMCURSCRIPT:: ; d5fe
+wCeladonGymCurScript:: ; d5fe
ds 1
-W_ROUTE6CURSCRIPT:: ; d5ff
+wRoute6CurScript:: ; d5ff
ds 1
-W_ROUTE8CURSCRIPT:: ; d600
+wRoute8CurScript:: ; d600
ds 1
-W_ROUTE24CURSCRIPT:: ; d601
+wRoute24CurScript:: ; d601
ds 1
-W_ROUTE25CURSCRIPT:: ; d602
+wRoute25CurScript:: ; d602
ds 1
-W_ROUTE9CURSCRIPT:: ; d603
+wRoute9CurScript:: ; d603
ds 1
-W_ROUTE10CURSCRIPT:: ; d604
+wRoute10CurScript:: ; d604
ds 1
-W_MTMOON1CURSCRIPT:: ; d605
+wMtMoon1CurScript:: ; d605
ds 1
-W_MTMOON3CURSCRIPT:: ; d606
+wMtMoon3CurScript:: ; d606
ds 1
-W_SSANNE8CURSCRIPT:: ; d607
+wSSAnne8CurScript:: ; d607
ds 1
-W_SSANNE9CURSCRIPT:: ; d608
+wSSAnne9CurScript:: ; d608
ds 1
-W_ROUTE22CURSCRIPT:: ; d609
+wRoute22CurScript:: ; d609
ds 1
ds 1
-W_REDSHOUSE2CURSCRIPT:: ; d60b
+wRedsHouse2CurScript:: ; d60b
ds 1
-W_VIRIDIANMARKETCURSCRIPT:: ; d60c
+wViridianMarketCurScript:: ; d60c
ds 1
-W_ROUTE22GATECURSCRIPT:: ; d60d
+wRoute22GateCurScript:: ; d60d
ds 1
-W_CERULEANCITYCURSCRIPT:: ; d60e
+wCeruleanCityCurScript:: ; d60e
ds 1
ds 7
-W_SSANNE5CURSCRIPT:: ; d616
+wSSAnne5CurScript:: ; d616
ds 1
-W_VIRIDIANFORESTCURSCRIPT:: ; d617
+wViridianForestCurScript:: ; d617
ds 1
-W_MUSEUM1FCURSCRIPT:: ; d618
+wMuseum1FCurScript:: ; d618
ds 1
-W_ROUTE13CURSCRIPT:: ; d619
+wRoute13CurScript:: ; d619
ds 1
-W_ROUTE14CURSCRIPT:: ; d61a
+wRoute14CurScript:: ; d61a
ds 1
-W_ROUTE17CURSCRIPT:: ; d61b
+wRoute17CurScript:: ; d61b
ds 1
-W_ROUTE19CURSCRIPT:: ; d61c
+wRoute19CurScript:: ; d61c
ds 1
-W_ROUTE21CURSCRIPT:: ; d61d
+wRoute21CurScript:: ; d61d
ds 1
wSafariZoneEntranceCurScript:: ; d61e
ds 1
-W_ROCKTUNNEL2CURSCRIPT:: ; d61f
+wRockTunnel2CurScript:: ; d61f
ds 1
-W_ROCKTUNNEL1CURSCRIPT:: ; d620
+wRockTunnel1CurScript:: ; d620
ds 1
ds 1
-W_ROUTE11CURSCRIPT:: ; d622
+wRoute11CurScript:: ; d622
ds 1
-W_ROUTE12CURSCRIPT:: ; d623
+wRoute12CurScript:: ; d623
ds 1
-W_ROUTE15CURSCRIPT:: ; d624
+wRoute15CurScript:: ; d624
ds 1
-W_ROUTE16CURSCRIPT:: ; d625
+wRoute16CurScript:: ; d625
ds 1
-W_ROUTE18CURSCRIPT:: ; d626
+wRoute18CurScript:: ; d626
ds 1
-W_ROUTE20CURSCRIPT:: ; d627
+wRoute20CurScript:: ; d627
ds 1
-W_SSANNE10CURSCRIPT:: ; d628
+wSSAnne10CurScript:: ; d628
ds 1
-W_VERMILIONCITYCURSCRIPT:: ; d629
+wVermilionCityCurScript:: ; d629
ds 1
-W_POKEMONTOWER2CURSCRIPT:: ; d62a
+wPokemonTower2CurScript:: ; d62a
ds 1
-W_POKEMONTOWER3CURSCRIPT:: ; d62b
+wPokemonTower3CurScript:: ; d62b
ds 1
-W_POKEMONTOWER4CURSCRIPT:: ; d62c
+wPokemonTower4CurScript:: ; d62c
ds 1
-W_POKEMONTOWER5CURSCRIPT:: ; d62d
+wPokemonTower5CurScript:: ; d62d
ds 1
-W_POKEMONTOWER6CURSCRIPT:: ; d62e
+wPokemonTower6CurScript:: ; d62e
ds 1
-W_POKEMONTOWER7CURSCRIPT:: ; d62f
+wPokemonTower7CurScript:: ; d62f
ds 1
-W_ROCKETHIDEOUT1CURSCRIPT:: ; d630
+wRocketHideout1CurScript:: ; d630
ds 1
-W_ROCKETHIDEOUT2CURSCRIPT:: ; d631
+wRocketHideout2CurScript:: ; d631
ds 1
-W_ROCKETHIDEOUT3CURSCRIPT:: ; d632
+wRocketHideout3CurScript:: ; d632
ds 1
-W_ROCKETHIDEOUT4CURSCRIPT:: ; d633
+wRocketHideout4CurScript:: ; d633
ds 2
-W_ROUTE6GATECURSCRIPT:: ; d635
+wRoute6GateCurScript:: ; d635
ds 1
-W_ROUTE8GATECURSCRIPT:: ; d636
+wRoute8GateCurScript:: ; d636
ds 2
-W_CINNABARISLANDCURSCRIPT:: ; d638
+wCinnabarIslandCurScript:: ; d638
ds 1
-W_MANSION1CURSCRIPT:: ; d639
+wMansion1CurScript:: ; d639
ds 2
-W_MANSION2CURSCRIPT:: ; d63b
+wMansion2CurScript:: ; d63b
ds 1
-W_MANSION3CURSCRIPT:: ; d63c
+wMansion3CurScript:: ; d63c
ds 1
-W_MANSION4CURSCRIPT:: ; d63d
+wMansion4CurScript:: ; d63d
ds 1
-W_VICTORYROAD2CURSCRIPT:: ; d63e
+wVictoryRoad2CurScript:: ; d63e
ds 1
-W_VICTORYROAD3CURSCRIPT:: ; d63f
+wVictoryRoad3CurScript:: ; d63f
ds 1
-W_CELADONCITYCURSCRIPT:: ; d640
+wCeladonCityCurScript:: ; d640
ds 1
-W_FIGHTINGDOJOCURSCRIPT:: ; d641
+wFightingDojoCurScript:: ; d641
ds 1
-W_SILPHCO2CURSCRIPT:: ; d642
+wSilphCo2CurScript:: ; d642
ds 1
-W_SILPHCO3CURSCRIPT:: ; d643
+wSilphCo3CurScript:: ; d643
ds 1
-W_SILPHCO4CURSCRIPT:: ; d644
+wSilphCo4CurScript:: ; d644
ds 1
-W_SILPHCO5CURSCRIPT:: ; d645
+wSilphCo5CurScript:: ; d645
ds 1
-W_SILPHCO6CURSCRIPT:: ; d646
+wSilphCo6CurScript:: ; d646
ds 1
-W_SILPHCO7CURSCRIPT:: ; d647
+wSilphCo7CurScript:: ; d647
ds 1
-W_SILPHCO8CURSCRIPT:: ; d648
+wSilphCo8CurScript:: ; d648
ds 1
-W_SILPHCO9CURSCRIPT:: ; d649
+wSilphCo9CurScript:: ; d649
ds 1
-W_HALLOFFAMEROOMCURSCRIPT:: ; d64a
+wHallOfFameRoomCurScript:: ; d64a
ds 1
-W_GARYCURSCRIPT:: ; d64b
+wGaryCurScript:: ; d64b
ds 1
-W_LORELEICURSCRIPT:: ; d64c
+wLoreleiCurScript:: ; d64c
ds 1
-W_BRUNOCURSCRIPT:: ; d64d
+wBrunoCurScript:: ; d64d
ds 1
-W_AGATHACURSCRIPT:: ; d64e
+wAgathaCurScript:: ; d64e
ds 1
-W_UNKNOWNDUNGEON3CURSCRIPT:: ; d64f
+wUnknownDungeon3CurScript:: ; d64f
ds 1
-W_VICTORYROAD1CURSCRIPT:: ; d650
+wVictoryRoad1CurScript:: ; d650
ds 1
ds 1
-W_LANCECURSCRIPT:: ; d652
+wLanceCurScript:: ; d652
ds 1
ds 4
-W_SILPHCO10CURSCRIPT:: ; d657
+wSilphCo10CurScript:: ; d657
ds 1
-W_SILPHCO11CURSCRIPT:: ; d658
+wSilphCo11CurScript:: ; d658
ds 1
ds 1
-W_FUCHSIAGYMCURSCRIPT:: ; d65a
+wFuchsiaGymCurScript:: ; d65a
ds 1
-W_SAFFRONGYMCURSCRIPT:: ; d65b
+wSaffronGymCurScript:: ; d65b
ds 1
ds 1
-W_CINNABARGYMCURSCRIPT:: ; d65d
+wCinnabarGymCurScript:: ; d65d
ds 1
-W_CELADONGAMECORNERCURSCRIPT:: ; d65e
+wCeladonGameCornerCurScript:: ; d65e
ds 1
-W_ROUTE16GATECURSCRIPT:: ; d65f
+wRoute16GateCurScript:: ; d65f
ds 1
-W_BILLSHOUSECURSCRIPT:: ; d660
+wBillsHouseCurScript:: ; d660
ds 1
-W_ROUTE5GATECURSCRIPT:: ; d661
+wRoute5GateCurScript:: ; d661
ds 1
-W_POWERPLANTCURSCRIPT:: ; d662
+wPowerPlantCurScript:: ; d662
; overload
ds 0
-W_ROUTE7GATECURSCRIPT:: ; d662
+wRoute7GateCurScript:: ; d662
; overload
ds 1
ds 1
-W_SSANNE2CURSCRIPT:: ; d664
+wSSAnne2CurScript:: ; d664
ds 1
wSeafoamIslands4CurScript:: ; d665
ds 1
-W_ROUTE23CURSCRIPT:: ; d666
+wRoute23CurScript:: ; d666
ds 1
wSeafoamIslands5CurScript:: ; d667
ds 1
-W_ROUTE18GATECURSCRIPT:: ; d668
+wRoute18GateCurScript:: ; d668
ds 1
ds 78
@@ -3092,29 +3165,29 @@ wSafariSteps:: ; d70d
; starts at 502
ds 2
-W_FOSSILITEM:: ; d70f
+wFossilItem:: ; d70f
; item given to cinnabar lab
ds 1
-W_FOSSILMON:: ; d710
+wFossilMon:: ; d710
; mon that will result from the item
ds 1
ds 2
-W_ENEMYMONORTRAINERCLASS:: ; d713
+wEnemyMonOrTrainerClass:: ; d713
; trainer classes start at 200
ds 1
wPlayerJumpingYScreenCoordsIndex:: ; d714
ds 1
-W_RIVALSTARTER:: ; d715
+wRivalStarter:: ; d715
ds 1
ds 1
-W_PLAYERSTARTER:: ; d717
+wPlayerStarter:: ; d717
ds 1
wBoulderSpriteIndex:: ; d718
@@ -3149,8 +3222,14 @@ wUnusedD71F:: ; d71f
ds 8
-wd728::
+wd728:: ; d728
; bit 0: using Strength outside of battle
+; bit 1: set by IsSurfingAllowed when surfing's allowed, but the caller resets it after checking the result
+; bit 3: received Old Rod
+; bit 4: received Good Rod
+; bit 5: received Super Rod
+; bit 6: gave one of the Saffron guards a drink
+; bit 7: set by ItemUseCardKey, which is leftover code from a previous implementation of the Card Key
ds 1
ds 1
@@ -3164,16 +3243,36 @@ wBeatGymFlags:: ; d72a
wd72c:: ; d72c
; bit 0: if not set, the 3 minimum steps between random battles have passed
+; bit 1: prevent audio fade out
+ ds 1
+
+wd72d:: ; d72d
+; This variable is used for temporary flags and as the destination map when
+; warping to the Trade Center or Colosseum.
+; bit 0: sprite facing directions have been initialised in the Trade Center
+; bit 3: do scripted warp (used to warp back to Lavender Town from the top of the pokemon tower)
+; bit 4: on a dungeon warp
+; bit 5: don't make NPCs face the player when spoken to
+; Bits 6 and 7 are set by scripts when starting major battles in the storyline,
+; but they do not appear to affect anything. Bit 6 is reset after all battles
+; and bit 7 is reset after trainer battles (but it's only set before trainer
+; battles anyway).
+ ds 1
+
+wd72e:: ; d72e
+; bit 0: the player has received Lapras in the Silph Co. building
+; bit 1: set in various places, but doesn't appear to have an effect
+; bit 2: the player has healed pokemon at a pokemon center at least once
+; bit 3: the player has a received a pokemon from Prof. Oak
+; bit 4: disable battles
+; bit 5: set when a battle ends and when the player blacks out in the overworld due to poison
+; bit 6: using the link feature
+; bit 7: set if scripted NPC movement has been initialised
ds 1
-wd72d:: ds 1 ; misc temp flags? (in some scripts, bit 6 and 7 set after a special battle (e.g. gym leaders) has been won)
- ; also used as a start menu flag
-
-wd72e::
-; bit 7: set if scripted NPC movement has been initialised
- ds 2 ; more temp misc flags, used with npc movement, main menu and other stuff
+ ds 1
-wd730::
+wd730:: ; d730
; bit 0: NPC sprite being moved by script
; bit 5: ignore joypad input
; bit 6: print text with no delay between each letter
@@ -3198,7 +3297,10 @@ wd732:: ; d732
wFlags_D733:: ; d733
; bit 0: running a test battle
-; bit 4: use variable [W_CURMAPSCRIPT] instead of the provided index for next frame's map script (used to start battle when talking to trainers)
+; bit 1: prevent music from changing when entering new map
+; bit 2: skip the joypad check in CheckWarpsNoCollision (used for the forced warp down the waterfall in the Seafoam Islands)
+; bit 3: trainer wants to battle
+; bit 4: use variable [wCurMapScript] instead of the provided index for next frame's map script (used to start battle when talking to trainers)
; bit 7: used fly out of battle
ds 1
@@ -3431,17 +3533,19 @@ wOpponentAfterWrongAnswer:: ; da38
wUnusedDA38:: ; da38
ds 1
-W_CURMAPSCRIPT:: ; da39
+wCurMapScript:: ; da39
; index of current map script, mostly used as index for function pointer array
; mostly copied from map-specific map script pointer and wirtten back later
ds 1
- ds 6
+ ds 7
-wPlayTimeHours:: ; da40
- ds 2
-wPlayTimeMinutes:: ; da42
- ds 2
+wPlayTimeHours:: ; da41
+ ds 1
+wPlayTimeMaxed:: ; da42
+ ds 1
+wPlayTimeMinutes:: ; da43
+ ds 1
wPlayTimeSeconds:: ; da44
ds 1
wPlayTimeFrames:: ; da45