summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xengine/gamefreak.asm139
-rwxr-xr-xengine/hall_of_fame.asm123
-rwxr-xr-xengine/palettes.asm785
-rw-r--r--hram.asm3
-rwxr-xr-xwram.asm25
5 files changed, 830 insertions, 245 deletions
diff --git a/engine/gamefreak.asm b/engine/gamefreak.asm
index d0f1bbac..10765ced 100755
--- a/engine/gamefreak.asm
+++ b/engine/gamefreak.asm
@@ -3,6 +3,8 @@ LoadShootingStarGraphics: ; 70000 (1c:4000)
ld [rOBP0], a ; $ff48
ld a, $a4
ld [rOBP1], a ; $ff49
+ call Func_3040
+ call Func_3061
ld de, AnimationTileset2 + $30 ; $471e ; star tile (top left quadrant)
ld hl, vChars1 + $200
ld bc, (BANK(AnimationTileset2) << 8) + $01
@@ -24,16 +26,16 @@ LoadShootingStarGraphics: ; 70000 (1c:4000)
ld bc, $10
jp CopyData
-AnimateShootingStar: ; 70044 (1c:4044)
+AnimateShootingStar: ; 7004a (1c:404a)
call LoadShootingStarGraphics
ld a, (SFX_1f_67 - SFX_Headers_1f) / 3
call PlaySound
ld hl, wOAMBuffer
ld bc, $a004
-.asm_70052
+.asm_70058
push hl
push bc
-.asm_70054
+.asm_7005a
ld a, [hl]
add $4
ld [hli], a
@@ -43,7 +45,7 @@ AnimateShootingStar: ; 70044 (1c:4044)
inc hl
inc hl
dec c
- jr nz, .asm_70054
+ jr nz, .asm_7005a
ld c, $1
call CheckForUserInterruption
pop bc
@@ -51,44 +53,45 @@ AnimateShootingStar: ; 70044 (1c:4044)
ret c
ld a, [hl]
cp $50
- jr nz, .asm_70070
- jr .asm_70052
-.asm_70070
+ jr nz, .asm_70076
+ jr .asm_70058
+.asm_70076
cp b
- jr nz, .asm_70052
+ jr nz, .asm_70058
ld hl, wOAMBuffer
ld c, $4
ld de, $4
-.asm_7007b
+.loop
ld [hl], $a0
add hl, de
dec c
- jr nz, .asm_7007b
+ jr nz, .loop
ld b, $3
-.asm_70083
+.asm_70089
ld hl, rOBP0 ; $ff48
rrc [hl]
rrc [hl]
+ call Func_3040
ld c, $a
call CheckForUserInterruption
ret c
dec b
- jr nz, .asm_70083
+ jr nz, .asm_70089
ld de, wOAMBuffer
ld a, $18
-.asm_70098
+.asm_700a1
push af
- ld hl, OAMData_700ee ; $40ee
+ ld hl, OAMData_70101 ; $40ee
ld bc, $4
call CopyData
pop af
dec a
- jr nz, .asm_70098
+ jr nz, .asm_700a1
xor a
ld [wWhichTrade], a ; wWhichTrade
- ld hl, PointerTable_700f2 ; $40f2
+ ld hl, PointerTable_70105 ; 1c:4105
ld c, $6
-.asm_700af
+.asm_700b8
ld a, [hli]
ld e, a
ld a, [hli]
@@ -97,26 +100,35 @@ AnimateShootingStar: ; 70044 (1c:4044)
push hl
ld hl, wOAMBuffer + $50
ld c, $4
-.asm_700ba
+.asm_700c3
ld a, [de]
cp $ff
- jr z, .asm_700d5
+ jr z, .asm_700e8
ld [hli], a
inc de
ld a, [de]
ld [hli], a
inc de
inc hl
+ push bc
+ ld a, [de]
+ ld b,a
+ ld a, [hl]
+ and $f0
+ or b
+ ld [hl], a
+ inc de
+ pop bc
inc hl
dec c
- jr nz, .asm_700ba
+ jr nz, .asm_700c3
ld a, [wWhichTrade] ; wWhichTrade
cp $18
- jr z, .asm_700d5
+ jr z, .asm_700e8
add $6
ld [wWhichTrade], a ; wWhichTrade
-.asm_700d5
- call Func_7011f
+.asm_700e8
+ call Func_70142
push af
ld hl, wOAMBuffer + $10
ld de, wOAMBuffer
@@ -127,72 +139,81 @@ AnimateShootingStar: ; 70044 (1c:4044)
pop bc
ret c
dec c
- jr nz, .asm_700af
+ jr nz, .asm_700b8
and a
ret
-OAMData_700ee: ; 700ee (1c:40ee)
+OAMData_70101: ; 70101 (1c:4101)
db $00,$00,$A2,$90
-PointerTable_700f2: ; 700f2 (1c:40f2)
- dw OAMData_700fe
- dw OAMData_70106
- dw OAMData_7010e
- dw OAMData_70116
- dw OAMData_7011e
- dw OAMData_7011e
+PointerTable_70105: ; 70105 (1c:4105)
+ dw OAMData_70111
+ dw OAMData_7011d
+ dw OAMData_70129
+ dw OAMData_70135
+ dw OAMData_70141
+ dw OAMData_70141
; each entry is only half of an OAM tile
-OAMData_700fe: ; 700fe (1c:40fe)
+OAMData_70111: ; 70111 (1c:4111)
db $68,$30
- db $68,$40
+ db $05,$68
+ db $40,$05
db $68,$58
- db $68,$78
+ db $04,$68
+ db $78,$07
-OAMData_70106: ; 70106 (1c:4106)
+OAMData_7011d: ; 7011d (1c:411d)
db $68,$38
- db $68,$48
+ db $05,$68
+ db $48,$06
db $68,$60
- db $68,$70
+ db $04,$68
+ db $70,$07
-OAMData_7010e: ; 7010e (1c:410e)
+OAMData_70129: ; 70129 (1c:4129)
db $68,$34
- db $68,$4C
+ db $05,$68
+ db $4c,$06
db $68,$54
- db $68,$64
+ db $06,$68
+ db $64,$07
-OAMData_70116: ; 70116 (1c:4116)
- db $68,$3C
- db $68,$5C
- db $68,$6C
- db $68,$74
+OAMData_70135: ; 70135 (1c:4135)
+ db $68,$3c
+ db $05,$68
+ db $5c,$04
+ db $68,$6c
+ db $07,$68
+ db $74,$07
-OAMData_7011e: ; 7011e (1c:411e)
+OAMData_70141: ; 70141 (1c:4141)
db $FF
-Func_7011f: ; 7011f (1c:411f)
+Func_70142: ; 70142 (1c:4142)
ld b, $8
-.asm_70121
+.asm_70144
ld hl, wOAMBuffer + $5c
ld a, [wWhichTrade] ; wWhichTrade
ld de, $fffc
ld c, a
-.asm_7012b
+.asm_7014e
inc [hl]
add hl, de
dec c
- jr nz, .asm_7012b
+ jr nz, .asm_7014e
ld a, [rOBP1] ; $ff49
xor $a0
ld [rOBP1], a ; $ff49
+ call Func_3061
ld c, $3
call CheckForUserInterruption
ret c
dec b
- jr nz, .asm_70121
+ jr nz, .asm_70144
ret
-GameFreakLogoOAMData: ; 70140 (1c:4140)
+GameFreakLogoOAMData: ; 70166 (1c:4166)
db $48,$50,$8D,$00
db $48,$58,$8E,$00
db $50,$50,$8F,$00
@@ -210,11 +231,11 @@ GameFreakLogoOAMData: ; 70140 (1c:4140)
db $60,$70,$81,$00
db $60,$78,$86,$00
-GameFreakShootingStarOAMData: ; 70180 (1c:4180)
- db $00,$A0,$A0,$10
- db $00,$A8,$A0,$30
- db $08,$A0,$A1,$10
- db $08,$A8,$A1,$30
+GameFreakShootingStarOAMData: ; 701a6 (1c:41a6)
+ db $00,$A0,$A0,$14
+ db $00,$A8,$A0,$34
+ db $08,$A0,$A1,$14
+ db $08,$A8,$A1,$34
-FallingStar: ; 70190 (1c:4190)
+FallingStar: ; 701b6 (1c:41b6)
INCBIN "gfx/falling_star.2bpp"
diff --git a/engine/hall_of_fame.asm b/engine/hall_of_fame.asm
index 30979118..179fcc82 100755
--- a/engine/hall_of_fame.asm
+++ b/engine/hall_of_fame.asm
@@ -1,5 +1,5 @@
-AnimateHallOfFame: ; 701a0 (1c:41a0)
- call Func_70423
+AnimateHallOfFame: ; 701c6 (1c:41c6)
+ call Func_7047b
call ClearScreen
ld c, 100
call DelayFrames
@@ -28,9 +28,9 @@ AnimateHallOfFame: ; 701a0 (1c:41a0)
ld hl, wd5a2
ld a, [hl]
inc a
- jr z, .asm_701eb
+ jr z, .asm_70211
inc [hl]
-.asm_701eb
+.asm_70211
ld a, $90
ld [hWY], a
ld c, BANK(Music_HallOfFame)
@@ -38,10 +38,10 @@ AnimateHallOfFame: ; 701a0 (1c:41a0)
call PlayMusic
ld hl, wPartySpecies
ld c, $ff
-.asm_701fb
+.asm_70221
ld a, [hli]
cp $ff
- jr z, .asm_70241
+ jr z, .asm_70266
inc c
push hl
push bc
@@ -53,13 +53,12 @@ AnimateHallOfFame: ; 701a0 (1c:41a0)
call AddNTimes
ld a, [hl]
ld [wTrainerFacingDirection], a
- call Func_70278
- call Func_702e1
+ call Func_702a2
+ call Func_7030e
ld c, $50
call DelayFrames
hlCoord 2, 13
- ld b, $3
- ld c, $e
+ ld b, $30e
call TextBoxBorder
hlCoord 4, 15
ld de, HallOfFameText
@@ -69,32 +68,32 @@ AnimateHallOfFame: ; 701a0 (1c:41a0)
call GBFadeOutToWhite
pop bc
pop hl
- jr .asm_701fb
-.asm_70241
+ jr .asm_70221
+.asm_70266
ld a, c
inc a
ld hl, wHallOfFame
ld bc, HOF_MON
call AddNTimes
ld [hl], $ff
- call SaveHallOfFameTeams
+ callab SaveHallOfFameTeams ; useless since in same bank
xor a
ld [wWhichTrade], a ; wWhichTrade
inc a
ld [wTrainerScreenY], a
- call Func_70278
- call Func_70377
- call Func_70423
+ call Func_702a2
+ call Func_703d1
+ call Func_7047b
xor a
ld [hWY], a
ld hl, rLCDC ; $ff40
res 3, [hl]
ret
-HallOfFameText: ; 7026b (1c:426b)
+HallOfFameText: ; 70295 (1c:4295)
db "HALL OF FAME@"
-Func_70278: ; 70278 (1c:4278)
+Func_702a2: ; 702a2 (1c:42a2)
call ClearScreen
ld a, $d0
ld [hSCY], a
@@ -107,56 +106,72 @@ Func_70278: ; 70278 (1c:4278)
ld [wcf1d], a
ld a, [wTrainerScreenY]
and a
- jr z, .asm_7029d
- call Func_7033e
- jr .asm_702ab
-.asm_7029d
+ jr z, .asm_702c7
+ call Func_70390
+ jr .asm_702d5
+.asm_702c7
hlCoord 12, 5
call GetMonHeader
call LoadFrontSpriteByMonIndex
predef LoadMonBackPic
-.asm_702ab
+.asm_702d5
ld b, $b
ld c, $0
call GoPAL_SET
ld a, $e4
ld [rBGP], a ; $ff47
+ call Func_3021
ld c, $31
- call Func_7036d
+ call Func_703c7
ld d, $a0
ld e, $4
ld a, [wOnSGB]
and a
- jr z, .asm_702c7
+ jr z, .asm_702f4
sla e
.asm_702c7
- call .asm_702d5
+ call .asm_70302
xor a
ld [hSCY], a
ld c, a
- call Func_7036d
+ call Func_703c7
ld d, $0
ld e, $fc
-.asm_702d5
+.asm_70302
call DelayFrame
ld a, [hSCX]
add e
ld [hSCX], a
cp d
- jr nz, .asm_702d5
+ jr nz, .asm_70302
ret
-Func_702e1: ; 702e1 (1c:42e1)
+Func_7030e: ; 7030e (1c:430e)
ld a, [wTrainerEngageDistance]
ld hl, wPartyMonNicks ; wPartyMonNicks
call GetPartyMonName
- call Func_702f0
- jp Func_70404
-
-Func_702f0: ; 702f0 (1c:42f0)
+ call Func_70348
+ ld a, [wTrainerEngageDistance]
+ ld [wcf91], a
+ callab Func_fce18 ; 3f:4e18
+ jr nc, .asm_70336
+ ld e,$22
+ callab Func_f0000
+ jr .asm_7033c
+.asm_70336
+ ld a,[wWhichTrade]
+ call PlayCry
+.asm_7033c
+ jp Func_7045c
+
+Func_7033f: ; 7033f (1c:433f)
+ call Func_70348
+ ld a,[wWhichTrade]
+ jp PlayCry
+
+Func_70348: ; 70348 (1c:4348)
hlCoord 0, 2
- ld b, $9
- ld c, $a
+ ld bc, $90a
call TextBoxBorder
hlCoord 2, 6
ld de, HoFMonInfoText
@@ -171,22 +186,26 @@ Func_702f0: ; 702f0 (1c:42f0)
ld [wd0b5], a
hlCoord 3, 9
predef PrintMonType
- ld a, [wWhichTrade] ; wWhichTrade
- jp PlayCry
+ ret
+ ;ld a, [wWhichTrade] ; wWhichTrade
+ ;jp PlayCry
-HoFMonInfoText: ; 70329 (1c:4329)
+HoFMonInfoText: ; 7037b (1c:437b)
db "LEVEL/"
next "TYPE1/"
next "TYPE2/@"
-Func_7033e: ; 7033e (1c:433e)
+Func_70390: ; 70390 (1c:433e)
ld de, RedPicFront ; $6ede
ld a, BANK(RedPicFront)
call UncompressSpriteFromDE
+ ld a,$0
+ call SwitchSRAMBankAndLatchClockData
ld hl, S_SPRITEBUFFER1
ld de, $a000
ld bc, $310
call CopyData
+ call PrepareRTCDataAndDisableSRAM
ld de, vFrontPic
call InterlaceMergeSpriteBuffers
ld de, RedPicBack ; $7e0a
@@ -197,22 +216,20 @@ Func_7033e: ; 7033e (1c:433e)
call InterlaceMergeSpriteBuffers
ld c, $1
-Func_7036d: ; 7036d (1c:436d)
+Func_703c7: ; 703c7 (1c:43c7)
ld b, $0
hlCoord 12, 5
predef_jump CopyTileIDsFromList
-Func_70377: ; 70377 (1c:4377)
+Func_703d1: ; 703d1 (1c:43d1)
ld hl, wd747
set 3, [hl]
predef DisplayDexRating
hlCoord 0, 4
- ld b, $6
- ld c, $a
+ ld bc, $60a
call TextBoxBorder
hlCoord 5, 0
- ld b, $2
- ld c, $9
+ ld b, $209
call TextBoxBorder
hlCoord 7, 2
ld de, wPlayerName ; wd158
@@ -242,26 +259,26 @@ Func_70377: ; 70377 (1c:4377)
call Func_703e2
ld hl, wcc5d
-Func_703e2: ; 703e2 (1c:43e2)
+Func_7043a: ; 7043a (1c:443a)
call PrintText
ld c, $78
jp DelayFrames
-HoFPlayTimeText: ; 703ea (1c:43ea)
+HoFPlayTimeText: ; 70442 (1c:4442)
db "PLAY TIME@"
-HoFMoneyText: ; 703f4 (1c:43f4)
+HoFMoneyText: ; 7044c (1c:444c)
db "MONEY@"
-DexSeenOwnedText: ; 703fa (1c:43fa)
+DexSeenOwnedText: ; 70452 (1c:4452)
TX_FAR _DexSeenOwnedText
db "@"
-DexRatingText: ; 703ff (1c:43ff)
+DexRatingText: ; 70457 (1c:4457)
TX_FAR _DexRatingText
db "@"
-Func_70404: ; 70404 (1c:4404)
+Func_7045c: ; 7045c (1c:445c)
ld hl, wHallOfFame
ld bc, HOF_MON
ld a, [wTrainerEngageDistance]
@@ -276,7 +293,7 @@ Func_70404: ; 70404 (1c:4404)
ld bc, $b
jp CopyData
-Func_70423: ; 70423 (1c:4423)
+Func_7047b: ; 7047b (1c:447b)
ld a, $a
ld [wcfc8], a
ld [wcfc9], a
diff --git a/engine/palettes.asm b/engine/palettes.asm
index ed06cf4e..c87959f7 100755
--- a/engine/palettes.asm
+++ b/engine/palettes.asm
@@ -1,40 +1,48 @@
-Func_71ddf: ; 71ddf (1c:5ddf)
+Func_71eb3: ; 71eb3 (1c:5eb3)
call GetPredefRegisters
ld a, b
cp $ff
- jr nz, .asm_71dea
+ jr nz, .asm_71ebe
ld a, [wcf1c]
-.asm_71dea
+.asm_71ebe
cp $fc
- jp z, Func_71fc2
+ jp z, Func_7218b
ld l, a
ld h, $0
add hl, hl
- ld de, PointerTable_71f73
+ ld de, PointerTable_7206b
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, Func_72156
+ ld de, Func_72328
push de
jp [hl]
-SendPalPacket_Black: ; 71dff (1c:5dff)
+SendPalPacket_Black: ; 71ed3 (1c:5ed3)
ld hl, PalPacket_Black
ld de, BlkPacket_Battle
ret
; uses PalPacket_Empty to build a packet based on mon IDs and health color
-BuildBattlePalPacket: ; 71e06 (1c:5e06)
+BuildBattlePalPacket: ; 71eda (1c:5eda)
ld hl, PalPacket_Empty
ld de, wcf2d
ld bc, $10
call CopyData
- ld a, [W_PLAYERBATTSTATUS3]
+ ;ld a, [W_PLAYERBATTSTATUS3]
ld hl, wBattleMonSpecies
+ ld a, [hl]
+ and a
+ jr z, .asm_71ef9
+ ld hl, wPartyMon1
+ ld a, [wPlayerMonNumber
+ ld bc, wPartyMon2 - wPartyMon1
+ call AddNTimes
+.asm_71ef9
call DeterminePaletteID
ld b, a
- ld a, [W_ENEMYBATTSTATUS3]
+ ;ld a, [W_ENEMYBATTSTATUS3]
ld hl, wEnemyMonSpecies2
call DeterminePaletteID
ld c, a
@@ -58,13 +66,13 @@ BuildBattlePalPacket: ; 71e06 (1c:5e06)
ld [wcf1c], a
ret
-SendPalPacket_TownMap: ; 71e48 (1c:5e48)
+SendPalPacket_TownMap: ; 71f26 (1c:5f26)
ld hl, PalPacket_TownMap
ld de, BlkPacket_WholeScreen
ret
; uses PalPacket_Empty to build a packet based the mon ID
-BuildStatusScreenPalPacket: ; 71e4f (1c:5e4f)
+BuildStatusScreenPalPacket: ; 71f2d (1c:5f2d)
ld hl, PalPacket_Empty
ld de, wcf2d
ld bc, $10
@@ -87,12 +95,12 @@ BuildStatusScreenPalPacket: ; 71e4f (1c:5e4f)
ld de, BlkPacket_StatusScreen
ret
-SendPalPacket_PartyMenu: ; 71e7b (1c:5e7b)
+SendPalPacket_PartyMenu: ; 71f59 (1c:5f59)
ld hl, PalPacket_PartyMenu
ld de, wcf2e
ret
-SendPalPacket_Pokedex: ; 71e82 (1c:5e82)
+SendPalPacket_Pokedex: ; 71f60 (1c:5f60)
ld hl, PalPacket_Pokedex
ld de, wcf2d
ld bc, $10
@@ -105,28 +113,28 @@ SendPalPacket_Pokedex: ; 71e82 (1c:5e82)
ld de, BlkPacket_Pokedex
ret
-SendPalPacket_Slots: ; 71e9f (1c:5e9f)
+SendPalPacket_Slots: ; 71f7d (1c:5f7d)
ld hl, PalPacket_Slots
ld de, BlkPacket_Slots
ret
-SendPalPacket_Titlescreen: ; 71ea6 (1c:5ea6)
+SendPalPacket_Titlescreen: ; 71f84 (1c:5f84)
ld hl, PalPacket_Titlescreen
ld de, BlkPacket_Titlescreen
ret
; used mostly for menus and the Oak intro
-SendPalPacket_Generic: ; 71ead (1c:5ead)
+SendPalPacket_Generic: ; 71f8b (1c:5f8b)
ld hl, PalPacket_Generic
ld de, BlkPacket_WholeScreen
ret
-SendPalPacket_NidorinoIntro: ; 71eb4 (1c:5eb4)
+SendPalPacket_NidorinoIntro: ; 71f92 (1c:5f92)
ld hl, PalPacket_NidorinoIntro
ld de, BlkPacket_NidorinoIntro
ret
-SendPalPacket_GameFreakIntro: ; 71ebb (1c:5ebb)
+SendPalPacket_GameFreakIntro: ; 71f99 (1c:5f99)
ld hl, PalPacket_GameFreakIntro
ld de, BlkPacket_GameFreakIntro
ld a, $8
@@ -134,7 +142,7 @@ SendPalPacket_GameFreakIntro: ; 71ebb (1c:5ebb)
ret
; uses PalPacket_Empty to build a packet based on the current map
-BuildOverworldPalPacket: ; 71ec7 (1c:5ec7)
+BuildOverworldPalPacket: ; 71fa5 (1c:5fa5)
ld hl, PalPacket_Empty
ld de, wcf2d
ld bc, $10
@@ -155,6 +163,10 @@ BuildOverworldPalPacket: ; 71ec7 (1c:5ec7)
jr z, .Lorelei
cp BRUNOS_ROOM
jr z, .caveOrBruno
+ cp BATTLE_CENTER
+ jr z,.asm_71ffd
+ cp TRADE_CENTER
+ jr z,.asm_71ffd
.normalDungeonOrBuilding
ld a, [wLastMap] ; town or route that current dungeon or building is located
.townOrRoute
@@ -178,10 +190,13 @@ BuildOverworldPalPacket: ; 71ec7 (1c:5ec7)
.Lorelei
xor a
jr .town
-
+.asm_71ffd
+ ld a,$18
+ jr .town
+
; used when a Pokemon is the only thing on the screen
; such as evolution, trading and the Hall of Fame
-SendPokemonPalette_WholeScreen: ; 71f17 (1c:5f17)
+SendPokemonPalette_WholeScreen: ; 72001 (1c:6001)
push bc
ld hl, PalPacket_Empty
ld de, wcf2d
@@ -191,16 +206,16 @@ SendPokemonPalette_WholeScreen: ; 71f17 (1c:5f17)
ld a, c
and a
ld a, $1e
- jr nz, .asm_71f31
+ jr nz, .asm_7201b
ld a, [wcf1d]
call DeterminePaletteIDOutOfBattle
-.asm_71f31
+.asm_7201b
ld [wcf2e], a
ld hl, wcf2d
ld de, BlkPacket_WholeScreen
ret
-BuildTrainerCardPalPacket: ; 71f3b (1c:5f3b)
+BuildTrainerCardPalPacket: ; 72025 (1c:6025)
ld hl, BlkPacket_TrainerCard
ld de, wcc5b
ld bc, $40
@@ -209,36 +224,46 @@ BuildTrainerCardPalPacket: ; 71f3b (1c:5f3b)
ld hl, wcc5d
ld a, [W_OBTAINEDBADGES]
ld c, $8
-.asm_71f52
+.asm_7203c
srl a
push af
- jr c, .asm_71f62
+ jr c, .asm_7204c
push bc
ld a, [de]
ld c, a
xor a
-.asm_71f5b
+.asm_72045
ld [hli], a
dec c
- jr nz, .asm_71f5b
+ jr nz, .asm_72045
pop bc
- jr .asm_71f67
-.asm_71f62
+ jr .asm_72051
+.asm_7204c
ld a, [de]
-.asm_71f63
+.asm_7204d
inc hl
dec a
- jr nz, .asm_71f63
-.asm_71f67
+ jr nz, .asm_7204d
+.asm_72051
pop af
inc de
dec c
- jr nz, .asm_71f52
+ jr nz, .asm_7203c
ld hl, PalPacket_TrainerCard
ld de, wcc5b
ret
-PointerTable_71f73: ; 71f73 (1c:5f73)
+SendUnknownPalPacket_7205d:: ; 7205d (1c:605d)
+ ld hl,UnknownPalPacket_72811
+ ld de,UnknownPacket_72611
+ ret
+
+SendUnknownPalPacket_72064:: ; 72064 (1c:6064)
+ ld hl,UnknownPalPacket_72821
+ ld de,UnknownPacket_72751
+ ret
+
+PointerTable_7206b: ; 7206b (1c:606b)
dw SendPalPacket_Black
dw BuildBattlePalPacket
dw SendPalPacket_TownMap
@@ -253,17 +278,20 @@ PointerTable_71f73: ; 71f73 (1c:5f73)
dw SendPokemonPalette_WholeScreen
dw SendPalPacket_GameFreakIntro
dw BuildTrainerCardPalPacket
+ dw SendUnknownPalPacket_7205d
+ dw SendUnknownPalPacket_72064
; each byte is the number of loops to make in .asm_71f5b for each badge
-LoopCounts_71f8f: ; 71f8f (1c:5f8f)
+LoopCounts_7208b: ; 7208b (1c:608b)
db $06,$06,$06,$12,$06,$06,$06,$06
-DeterminePaletteID: ; 71f97 (1c:5f97)
- bit 3, a ; bit 3 of battle status 3, set if current Pokemon is transformed
- ld a, PAL_GREYMON ; if yes, use Ditto's palette
- ret nz
+;DeterminePaletteID: ; 71f97 (1c:5f97)
+ ;bit 3, a ; bit 3 of battle status 3, set if ;current Pokemon is transformed
+ ;ld a, PAL_GREYMON ; if yes, use Ditto's palette
+ ;ret nz
+DeterminePaletteID: ; 72093 (1c:6093)
ld a, [hl]
-DeterminePaletteIDOutOfBattle: ; 71f9d (1c:5f9d)
+DeterminePaletteIDOutOfBattle: ; 72094 (1c:6094)
ld [wd11e], a
and a
jr z, .idZero
@@ -279,13 +307,132 @@ DeterminePaletteIDOutOfBattle: ; 71f9d (1c:5f9d)
ld a, [hl]
ret
-SendBlkPacket_PartyMenu: ; 71fb6 (1c:5fb6)
+Func_720ad:: ; 720ad (1c:60ad)
+ ld a,e
+ and a
+ jr nz,.asm_720bd
+ ld hl,Pointer_727e1
+ ld a,[hGBC]
+ and a
+ jp z,Func_721b4
+ jp Func_72346
+
+Func_720bd :: ; 720bd (1c:60bd)
+ ld hl,Func_72811
+ ld a,[hGBC]
+ and a
+ jp z,Func_721b4
+ call Func_72346
+ ld hl,Pointer_727e1
+ inc hl
+ ld a,[hli]
+ call Func_723fe
+ ld a,e
+ ld [wdee4],a
+ ld a,d
+ ld [wdee5],a
+ xor a
+ call Func_7240f
+ ld a,$1
+ call Func_72470
+ ret
+
+Func_720e3:: ; 720e3 (1c:60e3)
+ ld hl,Pointer_72761
+ ld de,wcf2d
+ ld bc,$10
+ call CopyData
+ call Func_7213b
+ ld hl,wcf2e
+ ld [hl],a
+ ld hl,wcf30
+ ld a,$26
+ ld [hl],a
+ ld hl,wcf2d
+ ld a,[hGBC]
+ and a
+ jr nz,.asm_72109
+ call Func_721b4
+ jr .asm_7210c
+.asm_72109
+ call Func_72346
+ ld hl,UnknownPacket_72611
+ ld de,wcf2d
+ ld bc,$10
+ call CopyData
+ ld hl,wcf30
+ ld a,$5
+ ld [hli],a
+ ld a,$7
+ ld [hli],a
+ ld a,$6
+ ld [hli],a
+ ld a,$b
+ ld [hli],a
+ ld a,$a
+ ld [hl],a
+ ld hl,wcf2d
+ ld a,[hGBC]
+ and a
+ jr nz,.asm_72137
+ call Func_721b4
+ jr .asm_7213a
+.asm_72137
+ call Func_72346
+.asm_7231a
+ ret
+
+Func_7213b:: ; 7213b (1c:613b)
+; similar to BuildOverworldPalPacket
+ ld a, [W_CURMAPTILESET]
+ cp CEMETERY
+ jr z, .PokemonTowerOrAgatha
+ cp CAVERN
+ jr z, .caveOrBruno
+ ld a, [W_CURMAP]
+ cp REDS_HOUSE_1F
+ jr c, .townOrRoute
+ cp UNKNOWN_DUNGEON_2
+ jr c, .normalDungeonOrBuilding
+ cp NAME_RATERS_HOUSE
+ jr c, .caveOrBruno
+ cp LORELEIS_ROOM
+ jr z, .Lorelei
+ cp BRUNOS_ROOM
+ jr z, .caveOrBruno
+ cp BATTLE_CENTER
+ jr z,.battleOrTradeCenter
+ cp TRADE_CENTER
+ jr z,.battleOrTradeCenter
+.normalDungeonOrBuilding
+ ld a, [wLastMap] ; town or route that current dungeon or building is located
+.townOrRoute
+ cp SAFFRON_CITY + 1
+ jr c, .town
+ ld a, PAL_ROUTE - 1
+.town
+ inc a ; a town's pallete ID is its map ID + 1
+ ret
+.PokemonTowerOrAgatha
+ ld a, PAL_GREYMON - 1
+ jr .town
+.caveOrBruno
+ ld a, PAL_CAVE - 1
+ jr .town
+.Lorelei
+ xor a
+ jr .town
+.battleOrTradeCenter
+ ld a,$18
+ jr .town
+
+SendBlkPacket_PartyMenu: ; 7217f (1c:617f)
ld hl, BlkPacket_PartyMenu ; $62f4
ld de, wcf2e
ld bc, $30
jp CopyData
-Func_71fc2: ; 71fc2 (1c:5fc2)
+Func_71fc2: ; 7218b (1c:618b)
ld hl, wcf1f
ld a, [wcf2d]
ld e, a
@@ -296,12 +443,12 @@ Func_71fc2: ; 71fc2 (1c:5fc2)
ld a, [de]
and a
ld e, $5
- jr z, .asm_71fdb
+ jr z, .asm_721a4
dec a
ld e, $a
- jr z, .asm_71fdb
+ jr z, .asm_721a4
ld e, $f
-.asm_71fdb
+.asm_721a4
push de
ld hl, wcf37
ld bc, $6
@@ -311,6 +458,17 @@ Func_71fc2: ; 71fc2 (1c:5fc2)
ld [hl], e
ret
+Func_721b4: ; 721b4 (1c:61b4)
+ ld a,$1
+; load a non-zero value in $fff9 to disable the routine that checks actual
+; joypad input (said routine, located at $15f, does nothing if $fff9 is not
+; zero)
+ ld [hReadJoypad],a
+ call SendSGBPacket
+ xor a
+ ld [hReadJoypad],a
+ ret
+
SendSGBPacket: ; 71feb (1c:5feb)
;check number of packets
ld a,[hl]
@@ -321,11 +479,6 @@ SendSGBPacket: ; 71feb (1c:5feb)
.loop2
; save B for later use
push bc
-; load a non-zero value in $fff9 to disable the routine that checks actual
-; joypad input (said routine, located at $15f, does nothing if $fff9 is not
-; zero)
- ld a,$01
- ld [$fff9],a
; send RESET signal (P14=LOW, P15=LOW)
xor a
ld [$ff00],a
@@ -366,10 +519,11 @@ SendSGBPacket: ; 71feb (1c:5feb)
; set P14=HIGH,P15=HIGH
ld a,$30
ld [$ff00],a
- xor a
- ld [$fff9],a
+ call Wait7000
+; xor a
+; ld [$fff9],a
; wait for about 70000 cycles
- call Wait7000
+; call Wait7000
; restore (previously pushed) number of packets
pop bc
dec b
@@ -378,44 +532,45 @@ SendSGBPacket: ; 71feb (1c:5feb)
; else send 16 more bytes
jr .loop2
-LoadSGB: ; 7202b (1c:602b)
+LoadSGB: ; 721f8 (1c:61f8)
xor a
ld [wOnSGB], a
call CheckSGB
- ret nc
+ jr c, .onSGB
+ ld a, [hGBC]
+ and a
+ jr z, .onDMG
ld a, $1
ld [wOnSGB], a
- ld a, [wGBC]
- and a
- jr z, .asm_7203f
+.onDMG
ret
-.asm_7203f
+.onSGB
di
- call Func_72075
+ call Func_72247
ei
ld a, $1
ld [wcf2d], a
ld de, ChrTrnPacket
ld hl, SGBBorderGraphics
- call Func_7210b
+ call Func_722d7
xor a
ld [wcf2d], a
ld de, PctTrnPacket
ld hl, BorderPalettes
- call Func_7210b
+ call Func_722d7
xor a
ld [wcf2d], a
ld de, PalTrnPacket
ld hl, SuperPalettes
- call Func_7210b
+ call Func_722d7
call ClearVram
ld hl, MaskEnCancelPacket
jp SendSGBPacket
-Func_72075: ; 72075 (1c:6075)
+Func_72247: ; 72247 (1c:6247)
ld hl, PointerTable_72089
ld c, $9
-.asm_7207a
+.loop
push bc
ld a, [hli]
push hl
@@ -426,10 +581,10 @@ Func_72075: ; 72075 (1c:6075)
inc hl
pop bc
dec c
- jr nz, .asm_7207a
+ jr nz, .loop
ret
-PointerTable_72089: ; 72089 (1c:6089)
+PointerTable_7225b: ; 7225b (1c:625b)
dw MaskEnFreezePacket
dw DataSnd_72548
dw DataSnd_72558
@@ -440,18 +595,14 @@ PointerTable_72089: ; 72089 (1c:6089)
dw DataSnd_725a8
dw DataSnd_725b8
-CheckSGB: ; 7209b (1c:609b)
+CheckSGB: ; 7226d (1c:626d)
ld hl, MltReq2Packet
- di
- call SendSGBPacket
- ld a, $1
- ld [$fff9], a
- ei
+ call Func_721b4
call Wait7000
ld a, [rJOYP] ; $ff0
and $3
cp $3
- jr nz, .asm_720fd
+ jr nz, .asm_722c9
ld a, $20
ld [rJOYP], a ; $ff0
ld a, [rJOYP] ; $ff0
@@ -482,60 +633,62 @@ CheckSGB: ; 7209b (1c:609b)
ld a, [rJOYP] ; $ff0
and $3
cp $3
- jr nz, .asm_720fd
- call Func_72102
+ jr nz, .asm_722c9
+ call Func_722ce
and a
ret
-.asm_720fd
- call Func_72102
+.asm_722c9
+ call Func_722ce
scf
ret
-Func_72102: ; 72102 (1c:6102)
+Func_722ce: ; 722ce (1c:62ce)
ld hl, MltReq1Packet
call SendSGBPacket
jp Wait7000
-Func_7210b: ; 7210b (1c:610b)
+Func_722d7: ; 722d7 (1c:62d7)
di
push de
call DisableLCD
ld a, $e4
ld [rBGP], a ; $ff47
+ call Func_72520
ld de, vChars1
ld a, [wcf2d]
and a
- jr z, .asm_72122
- call Func_72188
- jr .asm_72128
-.asm_72122
+ jr z, .asm_722f1
+ call Func_725fb
+ jr .asm_722f7
+.asm_722f1
ld bc, $1000
call CopyData
-.asm_72128
+.asm_722f7
ld hl, vBGMap0
ld de, $c
ld a, $80
ld c, $d
-.asm_72132
+.asm_72301
ld b, $14
-.asm_72134
+.asm_72303
ld [hli], a
inc a
dec b
- jr nz, .asm_72134
+ jr nz, .asm_72303
add hl, de
dec c
- jr nz, .asm_72132
+ jr nz, .asm_72301
ld a, $e3
ld [rLCDC], a ; $ff40
pop hl
call SendSGBPacket
xor a
ld [rBGP], a ; $ff47
+ call Func_72520
ei
ret
-Wait7000: ; 7214a (1c:614a)
+Wait7000: ; 7231c (1c:631c)
; Each loop takes 9 cycles so this routine actually waits 63000 cycles.
ld de, 7000
.loop
@@ -548,71 +701,441 @@ Wait7000: ; 7214a (1c:614a)
jr nz, .loop
ret
-Func_72156: ; 72156 (1c:6156)
- ld a, [wGBC]
+Func_72328: ; 72328 (1c:6328)
+ ld a, [hGBC]
and a
- jr z, .asm_72165
+ jr z, .asm_7233e
push de
- call Func_7216d
+ call Func_72346
pop hl
- call Func_72187
+ call Func_72346
+ ld a,[rLCDC]
+ and rLCDC_ENABLE_MASK
+ ret z
+ call Delay3
ret
-.asm_72165
+.asm_7233e
push de
call SendSGBPacket
pop hl
jp SendSGBPacket
-Func_7216d: ; 7216d (1c:616d)
- ld a, $80
- ld [$ff68], a
+Func_72346: ; 72346 (1c:6346)
+ ld a,[hl]
+ and $f8
+ cp $20
+ jp z,Func_7265e
inc hl
- ld c, $20
-.asm_72174
- ld a, [hli]
+ ld a,[hli]
+ inc hl
+ push hl
+ call Func_723fe
+ ld a,e
+ ld [wdee2],a
+ ld a,d
+ ld [wdee3],a
+
+ xor a
+ call Func_7240f
+ ld a,$0
+ call Func_72470
+ ld a,$1
+ call Func_7240f
+ ld a,$0
+ call Func_724df
+ ld a,$2
+ call Func_7240f
+ ld a,$4
+ call Func_724df
+
+ pop hl
+ ld a,[hli]
+ inc hl
+ push hl
+ call Func_723fe
+ ld a,e
+ ld [wdee4],a
+ ld a,d
+ ld [wdee5],a
+
+ xor a
+ call Func_7240f
+ ld a,$1
+ call Func_72470
+ ld a,$1
+ call Func_7240f
+ ld a,$1
+ call Func_724df
+ ld a,$2
+ call Func_7240f
+ ld a,$5
+ call Func_7240f
+
+ pop hl
+ ld a,[hli]
inc hl
+ push hl
+ call Func_723fe
+ ld a,e
+ ld [wdee6],a
+ ld a,d
+ ld [wdee7],a
+
+ xor a
+ call Func_7240f
+ ld a,$2
+ call Func_72470
+ ld a,$1
+ call Func_7240f
+ ld a,$2
+ call Func_724df
+ ld a,$2
+ call Func_7240f
+ ld a,$6
+ call Func_724df
+
+ pop hl
+ ld a,[hli]
+ inc hl
+ call Func_723fe
+ ld a,e
+ ld [wdee8],a
+ ld a,d
+ ld [wdee9],a
+
+ xor a
+ call Func_7240f
+ ld a,$3
+ call Func_72470
+ ld a,$1
+ call Func_7240f
+ ld a,$3
+ call Func_724df
+ ld a,$2
+ call Func_7240f
+ ld a,$7
+ call Func_724df
+
+ ret
+
+Func_723fe:: ; 723fe (1c:63fe)
+ push hl
+ ld l,a
+ xor a
+ ld h,a
+ add hl,hl
+ add hl,hl
+ add hl,hl
+ ld de,SuperPalettes ; not exactly sure if actually super palettes
+ add hl,de
+ ld a,l
+ ld e,a
+ ld a,h
+ ld d,a
+ pop hl
+ ret
+
+Func_7240f:: ; 7240f (1c:640f)
+ and a
+ jr nz,.asm_72419
+ ld a,[rBGP]
+ ld [wdef2],a
+ jr .asm_72428
+.asm_72419
+ dec a
+ jr nz,.asm_72423
+ ld a,[rOBP0]
+ ld [wdef3],a
+ jr .asm_72428
+.asm_72423
+ ld a,[rOBP1]
+ ld [wdef4],a
+.asm_72428
+ ld b,a
+ and $3
+ call Func_7246a
+ ld a,[hli]
+ ld [wdeea],a
+ ld a,[hl]
+ ld [wdeeb],a
+ ld a,b
+ rrca
+ rrca
+ ld b,a
+ and $3
+ call Func_7246a
+ ld a,[hli]
+ ld [wdeec],a
+ ld a,[hl]
+ ld [wdeed],a
+ ld a,b
+ rrca
+ rrca
+ ld b,a
+ and $3
+ call Func_7246a
+ ld a,[hli]
+ ld [wdeee],a
+ ld a,[hl]
+ ld [wdeef],a
+ ld a,b
+ rrca
+ rrca
+ ld b,a
+ and $3
+ call Func_7246a
+ ld a,[hli]
+ ld [wdef0],a
+ ld a,[hl]
+ ld [wdef1],a
+ ret
+
+Func_7246a:: ; 7246a (1c:646a)
+ add a
+ ld l,a
+ xor a
+ ld h,a
+ add hl,de
+ ret
+
+Func_72470:: ; 72470 (1c:6470)
+ push de
add a
add a
add a
- ld de, SuperPalettes
- add e
- jr nc, .asm_72180
- inc d
-.asm_72180
- ld a, [de]
- ld [$ff69], a
+ or $80
+ ld [rBGPI],a
+ ld de,rBGPD
+ ld hl,wdeea
+ ld b,$2
+ ld a,[rLCDC]
+ and rLCDC_ENABLE_MASK
+ jr nz,.lcdenabled
+ rept 4
+ call Func_7251b
+ endr
+ jr .done
+.lcdenabled
+ rept 4
+ call Func_72511
+ endr
+.done
+ pop de
+ ret
+
+Func_724a2:: ; 724a2 (1c:64a2)
+ push de
+ add a
+ add a
+ add a
+ ld l,a
+ xor a
+ ld h,a
+ ld de,wdef6
+ add hl,de
+ ld de,wdee9
+ ld c,$8
+.loop
+ ld a,[de]
+ ld [hli],a
+ inc de
dec c
- jr nz, .asm_72174
+ jr nz,.loop
+ pop de
ret
-Func_72187: ; 72187 (1c:6187)
+PreparePalDataTransfer:: ; 724ba (1c:64ba)
+; wait for vblank period unless LCD is disabled
+ ld a,[rLCDC]
+ and rLCDC_ENABLE_MASK
+ jr z,.lcddisabled
+ di
+.waitloop
+ ld a,[rLY]
+ cp 144
+ jr c,.waitloop
+.lcddisabled
+ call TransferPalData
+ ei
ret
-Func_72188: ; 72188 (1c:6188)
- ld b, $80
-.asm_7218a
- ld c, $10
-.asm_7218c
- ld a, [hli]
- ld [de], a
- inc de
- dec c
- jr nz, .asm_7218c
- ld c, $10
+TransferPalData: ; 724cc (1c:64cc)
xor a
-.asm_72195
- ld [de], a
- inc de
+ or $80
+ ld [rBGPI], a
+ ld de,rBGPD
+ ld hl,wdef6
+ ld c,$20
+.loop
+ ld a,[hli]
+ ld [de],a
dec c
- jr nz, .asm_72195
- dec b
- jr nz, .asm_7218a
+ jr nz,.loop
+ ret
+
+Func_724df: ; 724df (1c:64df)
+ push de
+ add a
+ add a
+ add a
+ or $80
+ ld [rOBPI],a
+ ld de,rOBPD
+ ld hl,wdeea
+ ld b,$2 ; searching oam STAT mode
+ ld a,[rLCDC]
+ and rLCDC_ENABLE_MASK
+ jr nz,.lcdenabled
+ rept 4
+ call Func_7251b
+ endr
+ jr .done
+.lcdenabled
+ rept 4
+ call Func_72511
+ endr
+.done
+ pop de
+ ret
+
+Func_72511: ; 72511 (1c:6511)
+ ld a,[rSTAT]
+ and b
+ jr z,Func_72511 ; wait if either in hblank or vblank period
+.notinhblank
+ ld a,[rSTAT]
+ and b
+ jr nz,.notinhblank ; wait if transferring oam or data to lcd driver
+Func_7251b: ; 7251b (1c:651b)
+ ld a,[hli]
+ ld [de],a
+ ld a,[hli]
+ ld [de],a
ret
+Func_72520:: ; 72520 (1c:6520)
+ ld a,[hGBC]
+ and a
+ ret z
+; fallthrough
+Func_72524:: ; 72524 (1c:6524)
+ ld a,[wdee2]
+ ld e,a
+ ld a,[wdee3]
+ ld d,a
+ xor a
+ call Func_7240f
+ ld a,$0
+ call Func_724a2
+ ld a,[wdee4]
+ ld e,a
+ ld a,[wdee5]
+ ld d,a
+ xor a
+ call Func_7240f
+ ld a,$1
+ call Func_724a2
+ ld a,[wdee5]
+ ld e,a
+ ld a,[wdee6]
+ ld d,a
+ xor a
+ call Func_7240f
+ ld a,$2
+ call Func_724a2
+ ld a,[wdee8]
+ ld e,a
+ ld a,[wdee9]
+ ld d,a
+ xor a
+ call Func_7240f
+ ld a,$3
+ call Func_724a2
+ call PreparePalDataTransfer
+ ret
+
+Func_7265c:: ; 7265c (1c:656c)
+ ld a,[wdee2]
+ ld e,a
+ ld a,[wdee3]
+ ld d,a
+ ld a,c
+ call Func_7240f
+ ld a,c
+ dec a
+ rlca
+ rlca
+ call Func_724df
+ ld a,[wdee4]
+ ld e,a
+ ld a,[wdee5]
+ ld d,a
+ ld a,c
+ call Func_7240f
+ ld a,c
+ dec a
+ rlca
+ rlca
+ inc a
+ call Func_724df
+ ld a,[wdee6]
+ ld e,a
+ ld a,[wdee7]
+ ld d,a
+ ld a,c
+ call Func_7240f
+ ld a,c
+ dec a
+ rlca
+ rlca
+ add $2
+ call Func_724df
+ ld a,[wdee8]
+ ld e,a
+ ld a,[wdee9]
+ ld d,a
+ ld a,c
+ call Func_7240f
+ ld a,c
+ dec a
+ rlca
+ rlca
+ add $3
+ call Func_724df
+ ret
+
+Func_725be:: ; 725be (1c:65be)
+ push hl
+ pop de
+ ld hl,Pointer_725e2
+ ld a,[hli]
+ ld c,a
+ ld a,e
+.loop
+ cp [hl]
+ jr z,.asm_725cf
+ inc hl
+ inc hl
+ dec c
+ jr nz,.loop
+ ret
+.asm_725cf
+ inc hl
+ ld a,d
+ cp [hl]
+ jr z,.asm_725d9
+ inc hl
+ dec c
+ jr nz,.asm_725c5
+ ret
+.asm_725d9
+ callba Func_bf450 ; 2f:7250
+ ret
+
INCLUDE "data/sgb_packets.asm"
INCLUDE "data/mon_palettes.asm"
INCLUDE "data/super_palettes.asm"
-INCLUDE "data/sgb_border.asm"
+INCLUDE "data/sgb_border.asm" \ No newline at end of file
diff --git a/hram.asm b/hram.asm
index c5e848ef..be9b9023 100644
--- a/hram.asm
+++ b/hram.asm
@@ -164,6 +164,9 @@ hLCDCPointer EQU $FFF4
hJoyInput EQU $FFF5
+hReadJoypad EQU $FFF8 ; 0 to read joypad, anything else skips joypad check
+ ; written to in palettes.asm
+
; bit 0: draw HP fraction to the right of bar instead of below (for party menu)
; bit 1: menu is double spaced
hFlags_0xFFF6 EQU $FFFA
diff --git a/wram.asm b/wram.asm
index 6a5dcde2..37e4823d 100755
--- a/wram.asm
+++ b/wram.asm
@@ -2312,8 +2312,29 @@ wBoxMon2:: ds box_struct_length * (MONS_PER_BOX + -1) ; dab7
wBoxMonOT:: ds 11 * MONS_PER_BOX ; dd2a
wBoxMonNicks:: ds 11 * MONS_PER_BOX ; de06
-wBoxMonNicksEnd:: ; dee2
-
+wBoxMonNicksEnd:: ; dee1
+
+wdee2:: ds 1 ; dee1
+wdee3:: ds 1 ; dee2
+wdee4:: ds 1
+wdee5:: ds 1
+wdee6:: ds 1
+wdee7:: ds 1
+wdee8:: ds 1
+wdee9:: ds 1
+wdeea:: ds 1
+wdeeb:: ds 1
+wdeec:: ds 1
+wdeed:: ds 1
+wdeee:: ds 1
+wdeef:: ds 1
+wdef0:: ds 1
+wdef1:: ds 1
+wdef2:: ds 1
+wdef3:: ds 1
+wdef4:: ds 1
+wdef5:: ds 1
+wdef6:: ds 1
SECTION "Stack", WRAMX[$dfff], BANK[1]
wStack:: ; dfff