diff options
author | Tauwasser <Tauwasser@tauwasser.eu> | 2018-06-12 22:11:39 +0200 |
---|---|---|
committer | Tauwasser <Tauwasser@tauwasser.eu> | 2018-06-12 22:12:54 +0200 |
commit | 6ab74f98847a211d81683d55548235fcb776b9c9 (patch) | |
tree | e75546774d10736e7ad2bd97247866e38045e36a | |
parent | 4ff0c9d5de5c504d5069f2ddc75c2b82241c1d6d (diff) |
home, wram, gfx: split toolgear functions from unknown, rename gfx functions, add wram variables
Signed-off-by: Tauwasser <Tauwasser@tauwasser.eu>
-rw-r--r-- | engine/gfx.asm | 10 | ||||
-rw-r--r-- | home/copy2.asm | 4 | ||||
-rw-r--r-- | home/map.asm | 8 | ||||
-rw-r--r-- | home/toolgear.asm | 188 | ||||
-rw-r--r-- | home/unknown.asm | 139 | ||||
-rw-r--r-- | home/vcopy.asm | 12 | ||||
-rw-r--r-- | home/window.asm | 2 | ||||
-rw-r--r-- | wram.asm | 19 |
8 files changed, 221 insertions, 161 deletions
diff --git a/engine/gfx.asm b/engine/gfx.asm index 66b3f90..b97d2f5 100644 --- a/engine/gfx.asm +++ b/engine/gfx.asm @@ -23,11 +23,11 @@ LoadPokemonMenuGraphics:: ; f8026 (3e:4026) lb bc, BANK(BattleHPBarGFX), ((LevelUpGFXEnd - BattleHPBarGFX) / LEN_2BPP_TILE) call Get2bpp jr LoadActiveFrameGraphics -LoadHexadecimalFontOrHUDGraphics:: ; f8034 (3e:4034) +LoadToolgearGraphicsDebug:: ; f8034 (3e:4034) call LoadActiveFrameGraphics ld hl, $d153 bit 0, [hl] - jr z, LoadHudGraphics + jr z, .loadToolgearGraphics ld hl, $9660 ld de, FontGFX + (("0" - "ア") * $08) lb bc, BANK(FontGFX), ("9" - "0" + 1) @@ -37,14 +37,14 @@ LoadHexadecimalFontOrHUDGraphics:: ; f8034 (3e:4034) lb bc, BANK(FontExtraAB_GFX), ("F" - "A" + 1) call Get2bpp ret -LoadHudGraphics:: ; f8057 (3e:4057) +.loadToolgearGraphics:: ; f8057 (3e:4057) ld hl, $9660 ld de, FontGFX + (("0" - "ア") * $08) lb bc, BANK(FontGFX), ("9" - "0" + 1) call Get1bpp ld hl, $9700 - ld de, $7381 - ld bc, $0401 + ld de, TrainerCardColonGFX + lb bc, BANK(TrainerCardColonGFX), 1 ; tile call Get2bpp ld hl, $9710 ld de, HUD_GFX diff --git a/home/copy2.asm b/home/copy2.asm index 7cc4696..9baad62 100644 --- a/home/copy2.asm +++ b/home/copy2.asm @@ -14,8 +14,8 @@ LoadFontsBattleExtra:: LoadFontExtra:: ; 00:0d1a jpab LoadFontExtraGraphicsWithCursor -LoadFontExtra2:: - jpab LoadHexadecimalFontOrHUDGraphics +LoadToolgearGraphics:: + jpab LoadToolgearGraphicsDebug FarCopyData: ; d2a (0:d2a) ; Identical to FarCopyBytes except for tail call optimization diff --git a/home/map.asm b/home/map.asm index 9078f64..d17cae3 100644 --- a/home/map.asm +++ b/home/map.asm @@ -437,7 +437,7 @@ InitializeVisibleSprites:: ; 23dc ret FadeIn:: ; 23e5 ; This is not OverworldFadeIn, but I don't know what it is - call Function202c ; TODO + call InitToolgearBuffer call RefreshTiles ld hl, wVramState set 0, [hl] @@ -1699,9 +1699,9 @@ Function2ba8:: ; 00:2ba8 call Bankswitch call _UpdateSprites call DelayFrame - call Function2075 - ld hl, wd14f - set 2, [hl] + call UpdateToolgear + ld hl, wToolgearFlags + set 2, [hl] ; transfer toolgear to window call DelayFrame pop af call Bankswitch diff --git a/home/toolgear.asm b/home/toolgear.asm new file mode 100644 index 0000000..2dfdee7 --- /dev/null +++ b/home/toolgear.asm @@ -0,0 +1,188 @@ +INCLUDE "constants.asm" + +SECTION "Toolgear drawing functions", ROM0[$2018] + +; local charmap, global charmap won't apply +; see https://github.com/rednex/rgbds/issues/265#issuecomment-395229694 + charmap "0", $66 + charmap "1", $67 + charmap "2", $68 + charmap "3", $69 + charmap "4", $6a + charmap "5", $6b + charmap "6", $6c + charmap "7", $6d + charmap "8", $6e + charmap "9", $6f + ; if debug coords shown + charmap "A", $70 + charmap "B", $71 + charmap "C", $72 + charmap "D", $73 + charmap "E", $74 + charmap "F", $75 + ; small kana aren't actively loaded + + ; if clock shown + charmap ":", $70 + charmap "日", $71 + charmap "月", $72 + charmap "火", $73 + charmap "水", $74 + charmap "木", $75 + charmap "金", $76 + charmap "土", $77 + charmap "⚡", $78 ; power + charmap "☎", $79 ; mobile + + ; active frame + charmap "┌", $79 ; only if debug coords shown + charmap "─", $7a + charmap "┐", $7b + charmap "│", $7c + charmap "└", $7d + charmap "┘", $7e + charmap " ", $7f + +EnableToolgear:: ; 00:2018 + ld hl, wd153 + res 0, [hl] + ld hl, wToolgearFlags + set 0, [hl] + ret + +DisableToolgear:: ; 00:2023 + ld hl, wToolgearFlags + res 0, [hl] + xor a + ldh [hLCDCPointer], a + ret + +InitToolgearBuffer:: ; 00:202c + xor a + ldh [hBGMapMode], a + ld hl, wToolgearFlags + bit 0, [hl] + jr z, .hide_window + + res 7, [hl] + call LoadToolgearGraphics + + bgcoord hl, 0, 0, wToolgearBuffer + ld a, "─" + ld bc, SCREEN_WIDTH + call ByteFill + + bgcoord hl, 0, 1, wToolgearBuffer + ld a, " " + ld bc, SCREEN_WIDTH + call ByteFill + + call UpdateToolgear + + ld hl, vBGMap1 + ld bc, $0004 ; 4 tiles = 2 rows + bgcoord de, 0, 0, wToolgearBuffer + call Get2bpp + + ld a, $80 + ldh [hLCDCPointer], a + ld a, $80 + ldh [rWY], a + ldh [hWY], a + ret + +.hide_window: ; 00:206b + xor a + ldh [hLCDCPointer], a + ld a, $90 + ldh [rWY], a + ldh [hWY], a + ret + +UpdateToolgear:: ; 2075 +; Prepares a buffer for the clock display, which in the Debug ROM is displayed on the bottom of the screen. +; This function is called every frame, and loads special tiles into the $66-$7a space. + bgcoord hl, 0, 1, wToolgearBuffer + ld bc, SCREEN_WIDTH + ld a, " " + call ByteFill + +if DEBUG + ld hl, wd153 + bit 0, [hl] + jr z, .debug_show_time + ld hl, wXCoord + bgcoord de, 4, 1, wToolgearBuffer + ld c, $01 + call .printHex + ld hl, wYCoord + bgcoord de, 8, 1, wToolgearBuffer + ld c, $01 + call .printHex + ret +.debug_show_time: +endc + + ld hl, hRTCHours + bgcoord de, 0, 1, wToolgearBuffer + call .printDec + ld hl, hRTCMinutes + bgcoord de, 3, 1, wToolgearBuffer + call .printDec + ldh a, [hRTCDays] + and 7 + add "日" ; Sunday + ldbgcoord_a 6, 1, wToolgearBuffer + ld a, "⚡" ; power + ldbgcoord_a 9, 1, wToolgearBuffer + inc a ; mobile + ldbgcoord_a 11, 1, wToolgearBuffer + ldh a, [hRTCSeconds] + and 1 + ret z + ld a, $70 ; : + ldbgcoord_a 2, 1, wToolgearBuffer + ret + +.printHex:: ; 20cd +; .printHex +; print c hexadecimal digits from hl to de +; clobbers: a, b + ld a, [hli] + ld b, a + swap a + call .printDigit + ld a, b + call .printDigit + dec c + jr nz, .printHex + ret + +.printDec:: ; 20dc +; .printDec +; print c decimal digits from hl to de +; clobbers: a, b + ld a, [hli] + ld b, 0 +.mod10: + inc b + sub 10 + jr nc, .mod10 + dec b + add 10 + push af + ld a, b + call .printDigit + pop af + call .printDigit + ret + +.printDigit:: ; 20f1 +; .printDigit +; print a hexadecimal digit for value in a to de + and $0f + add "0" + ld [de], a + inc de + ret
\ No newline at end of file diff --git a/home/unknown.asm b/home/unknown.asm index cc181e0..6568b5d 100644 --- a/home/unknown.asm +++ b/home/unknown.asm @@ -39,149 +39,14 @@ _2007:: ; 2007 call CloseSRAM ret -Function2018:: - ld hl, wd153 - res 0, [hl] - ld hl, wd14f - set 0, [hl] - ret - -Function2023:: - ld hl, wd14f - res 0, [hl] - xor a - ldh [hLCDCPointer], a - ret - -Function202c:: ; 00:202c - xor a - ldh [hBGMapMode], a - ld hl, wd14f - bit 0, [hl] - jr z, .asm_206b - - res 7, [hl] - call LoadFontExtra2 - - ld hl, wcbb2 - ld a, "─" - ld bc, SCREEN_WIDTH - call ByteFill - - ld hl, wcbd2 - ld a, " " - ld bc, SCREEN_WIDTH - call ByteFill - - call Function2075 - - ld hl, vBGMap1 - ld bc, $4 - ld de, wcbb2 - call Get2bpp - - ld a, $80 - ldh [hLCDCPointer], a - ld a, $80 - ldh [rWY], a - ldh [hWY], a - ret - -.asm_206b: ; 00:206b - xor a - ldh [hLCDCPointer], a - ld a, $90 - ldh [rWY], a - ldh [hWY], a - ret - -UpdateToolgear:: ; 2075 -; Prepares a buffer for the clock display, which in the Debug ROM is displayed on the bottom of the screen. -; This function is called every frame, and loads special tiles into the $66-$7a space. - ld hl, wcbd2 - ld bc, SCREEN_WIDTH - ld a, " " - call ByteFill - -if DEBUG - ld hl, wd153 - bit 0, [hl] - jr z, ._209e - ld hl, $d65b - ld de, wcbd2 + 4 - ld c, $01 - call _20CD - ld hl, $d65a - ld de, wcbd2 + 8 - ld c, $01 - call _20CD - ret -._209e: -endc - - ld hl, hRTCHours - ld de, wcbd2 - call _20DC - ld hl, hRTCMinutes - ld de, wcbd2 + 3 - call _20DC - ldh a, [hRTCDays] - and 7 - add $71 ; Sunday - ld [wcbd2 + 6], a - ld a, $78 ; power - ld [wcbd2 + 9], a - inc a ; mobile - ld [wcbd2 + 11], a - ldh a, [hRTCSeconds] - and 1 - ret z - ld a, $70 ; : - ld [wcbd2 + 2], a - ret - -_20CD:: ; 20cd -; PrintAsHex - ld a, [hli] - ld b, a - swap a - call _20F1 - ld a, b - call _20F1 - dec c - jr nz, _20CD - ret - -_20DC:: ; 20dc -; PrintAsDec - ld a, [hli] - ld b, 0 -._20df: - inc b - sub 10 - jr nc, ._20df - dec b - add 10 - push af - ld a, b - call _20F1 - pop af - call _20F1 - ret - -_20F1:: ; 20f1 - and %1111 - add $66 ; digit 0 - ld [de], a - inc de - ret +SECTION "Unknown_20f8", ROM0[$20F8] Function20f8:: call Function1848 call Function18cc ret -SECTION "Unknown_094c", ROM0 [$094C] +SECTION "Unknown_094c", ROM0[$094C] Function094c:: ldh a, [hROMBank] diff --git a/home/vcopy.asm b/home/vcopy.asm index 72fe062..91c2395 100644 --- a/home/vcopy.asm +++ b/home/vcopy.asm @@ -544,8 +544,10 @@ EnableSprites:: ; 1531 (0:1531) ret ; 0x1538 -Function1538: ; 1538 (0:1538) - ld a, [$d14f] +TransferToolgearRow: ; 1538 (0:1538) +; TransferToolgearRow +; Copy second line of toolgear to window + ld a, [wToolgearFlags] bit 0, a ret z bit 7, a @@ -553,11 +555,11 @@ Function1538: ; 1538 (0:1538) bit 2, a res 2, a ret z - ld [$d14f], a + ld [wToolgearFlags], a ld [hSPTemp], sp - ld hl, $cbd2 + bgcoord hl, 0, 1, wToolgearBuffer ld sp, hl - ld hl, $9c20 + bgcoord hl, 0, 1, vBGMap1 ld a, $01 jp TransferBgRows diff --git a/home/window.asm b/home/window.asm index 1815e89..c2dc212 100644 --- a/home/window.asm +++ b/home/window.asm @@ -19,5 +19,5 @@ RefreshScreen:: Function1fea:: call Function3171 call ClearWindowData - call Function202c + call InitToolgearBuffer ret @@ -264,11 +264,9 @@ wScreenSave:: ; cb94 ds 6 * 5 SECTION "CBB2", WRAM0[$CBB2] -wcbb2:: ; cbb2 - ds $20 -wcbd2:: ; cbd2 - ds $20 -; cbe6 +wToolgearBuffer:: ; cbb2 + ds $40 + ; cbe2 SECTION "CBF2", WRAM0[$CBF2] @@ -640,14 +638,21 @@ wMap14Object:: map_object wMap14 wMap15Object:: map_object wMap15 wMapObjectsEnd:: ; d14f -wd14f:: - ds 3 ; TODO +wToolgearFlags:: db ; d14f +; 76543210 +; | | \- show toolgear +; | | +; | \--- transfer toolgear to window +; \-------- hide toolgear + + ds 2 ; TODO wTimeOfDayPal:: db ; d152 ; Applied according to wCurTimeOfDay from wTimeOfDayPalset wd153:: db ; d153 ; 76543210 +; | \- show player coords in toolgear instead of time ; \-------- switch overworld palettes according to seconds not hours ds 3 ; TODO |