mirror of
https://github.com/pret/pokegold.git
synced 2026-05-19 02:09:45 -05:00
Rebuild HOME
This commit is contained in:
parent
cac0d5ade9
commit
ee84a2a0e4
1
Makefile
1
Makefile
|
|
@ -11,6 +11,7 @@ includes := $(PYTHON) scan_includes.py
|
|||
|
||||
|
||||
rom_obj := \
|
||||
wram.o \
|
||||
main.o \
|
||||
home.o
|
||||
|
||||
|
|
|
|||
35
home.asm
35
home.asm
|
|
@ -12,12 +12,14 @@ Start::
|
|||
SECTION "bank0", HOME[$150]
|
||||
INCLUDE "home/vblank.asm"
|
||||
INCLUDE "home/delay.asm"
|
||||
|
||||
Function343::
|
||||
dr $343, $41b
|
||||
INCLUDE "home/rtc.asm"
|
||||
INCLUDE "home/fade.asm"
|
||||
|
||||
LCD::
|
||||
dr $41b, $5c6
|
||||
dr $41b, $467
|
||||
|
||||
UpdateTime::
|
||||
dr $467, $5c6
|
||||
|
||||
Start_::
|
||||
dr $5c6, $6aa
|
||||
|
|
@ -28,25 +30,32 @@ Serial::
|
|||
JoypadInt::
|
||||
dr $8df, $8e6
|
||||
|
||||
Function8e6::
|
||||
Joypad::
|
||||
dr $8e6, $bdf
|
||||
|
||||
Functionbdf::
|
||||
dr $bdf, $be3
|
||||
UpdatePalsIfCGB::
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
ret z
|
||||
UpdateCGBPals::
|
||||
dr $be3, $c61
|
||||
|
||||
Functionbe3::
|
||||
dr $be3, $1458
|
||||
Functionc61::
|
||||
dr $c61, $c83
|
||||
|
||||
Function1458::
|
||||
Functionc83::
|
||||
dr $c83, $1458
|
||||
|
||||
UpdateBGMapBuffer::
|
||||
dr $1458, $14bb
|
||||
|
||||
Function14bb::
|
||||
UpdateBGMap::
|
||||
dr $14bb, $1579
|
||||
|
||||
Function1579::
|
||||
dr $1579, $15d0
|
||||
|
||||
Function15d0::
|
||||
Serve2bppRequest::
|
||||
dr $15d0, $162b
|
||||
|
||||
Function162b::
|
||||
|
|
@ -55,7 +64,7 @@ Function162b::
|
|||
Function1642::
|
||||
dr $1642, $1ebf
|
||||
|
||||
Function1ebf::
|
||||
AskSerial::
|
||||
dr $1ebf, $1efa
|
||||
|
||||
Function1efa::
|
||||
|
|
|
|||
192
home/fade.asm
192
home/fade.asm
|
|
@ -1,109 +1,104 @@
|
|||
Function360:: ; 360 (0:0360)
|
||||
; XXX
|
||||
; TimeOfDayFade
|
||||
ld a, [wTimeOfDayPal]
|
||||
ld b, a
|
||||
ld hl, IncGradGBPalTable_11
|
||||
ld a, l
|
||||
sub b
|
||||
ld l, a
|
||||
jr nc, .okay
|
||||
dec h
|
||||
.okay
|
||||
ld a, [hli]
|
||||
ld [rBGP], a
|
||||
ld a, [hli]
|
||||
ld [rOBP0], a
|
||||
ld a, [hli]
|
||||
ld [rOBP1], a
|
||||
ret
|
||||
|
||||
Function360::
|
||||
ld a, [$d568] ; 360
|
||||
ld b, a ; 363
|
||||
ld hl, $40c ; 364
|
||||
ld a, l ; 367
|
||||
sub b ; 368
|
||||
ld l, a ; 369
|
||||
jr nc, Function36d ; 36a
|
||||
dec h ; 36c
|
||||
ld a, [hli] ; 36d
|
||||
ldh [$ff47], a ; 36e
|
||||
ld a, [hli] ; 370
|
||||
ldh [$ff48], a ; 371
|
||||
ld a, [hli] ; 373
|
||||
ldh [$ff49], a ; 374
|
||||
ret ; 376
|
||||
; 377
|
||||
RotateFourPalettesRight::
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .dmg
|
||||
ld hl, IncGradGBPalTable_00
|
||||
ld b, 4
|
||||
jr RotatePalettesRight
|
||||
|
||||
Function377::
|
||||
ldh a, [$ffe8] ; 377
|
||||
and a ; 379
|
||||
jr z, Function383 ; 37a
|
||||
ld hl, $3eb ; 37c
|
||||
ld b, $4 ; 37f
|
||||
jr Function39b ; 381
|
||||
; 383
|
||||
.dmg
|
||||
ld hl, IncGradGBPalTable_08
|
||||
ld b, 4
|
||||
jr RotatePalettesRight
|
||||
|
||||
Function383::
|
||||
ld hl, $403 ; 383
|
||||
ld b, $4 ; 386
|
||||
jr Function39b ; 388
|
||||
; 38a
|
||||
RotateThreePalettesRight::
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .dmg
|
||||
ld hl, IncGradGBPalTable_05
|
||||
ld b, 3
|
||||
jr RotatePalettesRight
|
||||
|
||||
Function38a::
|
||||
ldh a, [$ffe8] ; 38a
|
||||
and a ; 38c
|
||||
jr z, Function396 ; 38d
|
||||
ld hl, $3fa ; 38f
|
||||
ld b, $3 ; 392
|
||||
jr Function39b ; 394
|
||||
; 396
|
||||
.dmg
|
||||
ld hl, IncGradGBPalTable_13
|
||||
ld b, 3
|
||||
RotatePalettesRight::
|
||||
.loop
|
||||
push de
|
||||
ld a, [hli]
|
||||
call Functionc61
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
call Functionc83
|
||||
ld c, 8
|
||||
call DelayFrames
|
||||
pop de
|
||||
dec b
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
Function396::
|
||||
ld hl, $412 ; 396
|
||||
ld b, $3 ; 399
|
||||
push de ; 39b
|
||||
ld a, [hli] ; 39c
|
||||
call Functionc61 ; 39d
|
||||
ld a, [hli] ; 3a0
|
||||
ld e, a ; 3a1
|
||||
ld a, [hli] ; 3a2
|
||||
ld d, a ; 3a3
|
||||
call Functionc83 ; 3a4
|
||||
ld c, $8 ; 3a7
|
||||
call DelayFrames ; 3a9
|
||||
pop de ; 3ac
|
||||
dec b ; 3ad
|
||||
jr nz, Function39b ; 3ae
|
||||
ret ; 3b0
|
||||
; 3b1
|
||||
RotateFourPalettesLeft::
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .dmg
|
||||
ld hl, IncGradGBPalTable_04 - 1
|
||||
ld b, 4
|
||||
jr RotatePalettesLeft
|
||||
|
||||
Function3b1::
|
||||
ldh a, [$ffe8] ; 3b1
|
||||
and a ; 3b3
|
||||
jr z, Function3bd ; 3b4
|
||||
ld hl, $3f6 ; 3b6
|
||||
ld b, $4 ; 3b9
|
||||
jr Function3d5 ; 3bb
|
||||
; 3bd
|
||||
.dmg
|
||||
ld hl, IncGradGBPalTable_12 - 1
|
||||
ld b, 4
|
||||
jr RotatePalettesLeft
|
||||
|
||||
Function3bd::
|
||||
ld hl, $40e ; 3bd
|
||||
ld b, $4 ; 3c0
|
||||
jr Function3d5 ; 3c2
|
||||
; 3c4
|
||||
RotateThreePalettesLeft::
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jr z, .dmg
|
||||
ld hl, IncGradGBPalTable_07 - 1
|
||||
ld b, 3
|
||||
jr RotatePalettesLeft
|
||||
.dmg
|
||||
ld hl, IncGradGBPalTable_15 - 1
|
||||
ld b, 3
|
||||
RotatePalettesLeft::
|
||||
.loop
|
||||
push de
|
||||
ld a, [hld]
|
||||
ld d, a
|
||||
ld a, [hld]
|
||||
ld e, a
|
||||
call Functionc83
|
||||
ld a, [hld]
|
||||
call Functionc61
|
||||
ld c, 8
|
||||
call DelayFrames
|
||||
pop de
|
||||
dec b
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
Function3c4::
|
||||
ldh a, [$ffe8] ; 3c4
|
||||
and a ; 3c6
|
||||
jr z, Function3d0 ; 3c7
|
||||
ld hl, $3ff ; 3c9
|
||||
ld b, $3 ; 3cc
|
||||
jr Function3d5 ; 3ce
|
||||
; 3d0
|
||||
|
||||
Function3d0::
|
||||
ld hl, $417 ; 3d0
|
||||
ld b, $3 ; 3d3
|
||||
push de ; 3d5
|
||||
ld a, [hld] ; 3d6
|
||||
ld d, a ; 3d7
|
||||
ld a, [hld] ; 3d8
|
||||
ld e, a ; 3d9
|
||||
call Functionc83 ; 3da
|
||||
ld a, [hld] ; 3dd
|
||||
call Functionc61 ; 3de
|
||||
ld c, $8 ; 3e1
|
||||
call DelayFrames ; 3e3
|
||||
pop de ; 3e6
|
||||
dec b ; 3e7
|
||||
jr nz, Function3d5 ; 3e8
|
||||
ret ; 3ea
|
||||
; 3eb
|
||||
|
||||
Function3eb::
|
||||
IncGradGBPalTable_00:: db %11111111, %11111111, %11111111
|
||||
IncGradGBPalTable_01:: db %11111110, %11111110, %11111110
|
||||
IncGradGBPalTable_02:: db %11111001, %11111001, %11111001
|
||||
|
|
@ -125,4 +120,3 @@ IncGradGBPalTable_13:: db %10010000, %10000000, %10010000
|
|||
IncGradGBPalTable_14:: db %01000000, %01000000, %01000000
|
||||
|
||||
IncGradGBPalTable_15:: db %00000000, %00000000, %00000000
|
||||
; 41b
|
||||
|
|
|
|||
41
home/rtc.asm
41
home/rtc.asm
|
|
@ -1,21 +1,22 @@
|
|||
Function343::
|
||||
ld a, [$c1cd] ; 343
|
||||
cp $0 ; 346
|
||||
ret z ; 348
|
||||
call Function467 ; 349
|
||||
ld a, [$cfe5] ; 34c
|
||||
bit 0, a ; 34f
|
||||
ret z ; 351
|
||||
Function352::
|
||||
ld hl, $4366 ; 352
|
||||
ld a, $23 ; 355
|
||||
rst FarCall ; 357
|
||||
ret ; 358
|
||||
; 359
|
||||
Function343:: ; 343
|
||||
; update time and time-sensitive palettes
|
||||
|
||||
Function359::
|
||||
ld hl, $4397 ; 359
|
||||
ld a, $23 ; 35c
|
||||
rst FarCall ; 35e
|
||||
ret ; 35f
|
||||
; 360
|
||||
; rtc enabled?
|
||||
ld a, [wRTCEnabled]
|
||||
cp 0
|
||||
ret z
|
||||
|
||||
call UpdateTime
|
||||
|
||||
; obj update on?
|
||||
ld a, [wVramState]
|
||||
bit 0, a
|
||||
ret z
|
||||
|
||||
TimeOfDayPals:: ; 352
|
||||
callab _TimeOfDayPals
|
||||
ret
|
||||
|
||||
UpdateTimePals:: ; 359
|
||||
callab _UpdateTimePals
|
||||
ret
|
||||
|
|
|
|||
639
home/vblank.asm
639
home/vblank.asm
|
|
@ -1,277 +1,384 @@
|
|||
VBlank::
|
||||
push af ; 150
|
||||
push bc ; 151
|
||||
push de ; 152
|
||||
push hl ; 153
|
||||
ld a, [hVBlank] ; 154
|
||||
and $7 ; 156
|
||||
ld e, a ; 158
|
||||
ld d, $0 ; 159
|
||||
ld hl, .blanks ; 15b
|
||||
add hl, de ; 15e
|
||||
add hl, de ; 15f
|
||||
ld a, [hli] ; 160
|
||||
ld h, [hl] ; 161
|
||||
ld l, a ; 162
|
||||
ld de, .return ; 163
|
||||
push de ; 166
|
||||
jp [hl] ; 167
|
||||
push af
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
ld a, [hVBlank]
|
||||
and $7
|
||||
ld e, a
|
||||
ld d, $0
|
||||
ld hl, .blanks
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld de, .return
|
||||
push de
|
||||
jp [hl]
|
||||
.return
|
||||
call Function1efa ; 168
|
||||
pop hl ; 16b
|
||||
pop de ; 16c
|
||||
pop bc ; 16d
|
||||
pop af ; 16e
|
||||
reti ; 16f
|
||||
; 170
|
||||
call Function1efa
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
pop af
|
||||
reti
|
||||
|
||||
.blanks
|
||||
dw Function180
|
||||
dw Function1f4
|
||||
dw Function2b0
|
||||
dw Function2c4
|
||||
dw Function255
|
||||
dw Function278
|
||||
dw Function180
|
||||
dw Function180
|
||||
dw VBlank0
|
||||
dw VBlank1
|
||||
dw VBlank2
|
||||
dw VBlank3
|
||||
dw VBlank4
|
||||
dw VBlank5
|
||||
dw VBlank0
|
||||
dw VBlank0 ; just in case
|
||||
;180
|
||||
|
||||
Function180::
|
||||
ld hl, hVBlankCounter ; 180
|
||||
inc [hl] ; 183
|
||||
ld a, [rDIV] ; 184
|
||||
ld b, a ; 186
|
||||
ld a, [hRandomAdd] ; 187
|
||||
adc b ; 189
|
||||
ld [hRandomAdd], a ; 18a
|
||||
ld a, [rDIV] ; 18c
|
||||
ld b, a ; 18e
|
||||
ld a, [hRandomSub] ; 18f
|
||||
sbc b ; 191
|
||||
ld [hRandomSub], a ; 192
|
||||
ld a, [hROMBank] ; 194
|
||||
ld [$d155], a ; 196
|
||||
ld a, [hSCX] ; 199
|
||||
ld [rSCX], a ; 19b
|
||||
ld a, [hSCY] ; 19d
|
||||
ld [rSCY], a ; 19f
|
||||
ld a, [hWY] ; 1a1
|
||||
ld [rWY], a ; 1a3
|
||||
ld a, [hWX] ; 1a5
|
||||
ld [rWX], a ; 1a7
|
||||
call Function1458 ; 1a9
|
||||
jr c, Function1c2 ; 1ac
|
||||
call Functionbdf ; 1ae
|
||||
jr c, Function1c2 ; 1b1
|
||||
call Function14bb ; 1b3
|
||||
call Function15d0 ; 1b6
|
||||
call Function1579 ; 1b9
|
||||
call Function162b ; 1bc
|
||||
call Function1642 ; 1bf
|
||||
Function1c2::
|
||||
ld a, [hOAMUpdate] ; 1c2
|
||||
and a ; 1c4
|
||||
jr nz, Function1ca ; 1c5
|
||||
call hPushOAM ; 1c7
|
||||
Function1ca::
|
||||
xor a ; 1ca
|
||||
ld [$ceea], a ; 1cb
|
||||
ld a, [$cee8] ; 1ce
|
||||
and a ; 1d1
|
||||
jr z, Function1d8 ; 1d2
|
||||
dec a ; 1d4
|
||||
ld [$cee8], a ; 1d5
|
||||
Function1d8::
|
||||
ld a, [$cee9] ; 1d8
|
||||
and a ; 1db
|
||||
jr z, Function1e2 ; 1dc
|
||||
dec a ; 1de
|
||||
ld [$cee9], a ; 1df
|
||||
Function1e2::
|
||||
call Function8e6 ; 1e2
|
||||
ld a, BANK(Functione805c) ; 1e5
|
||||
rst Bankswitch ; 1e7
|
||||
call Functione805c ; 1e8
|
||||
ld a, [$d155] ; 1eb
|
||||
rst Bankswitch ; 1ee
|
||||
ld a, [$ff9a] ; 1ef
|
||||
ld [$ffe5], a ; 1f1
|
||||
ret ; 1f3
|
||||
; 1f4
|
||||
VBlank0:: ; 180
|
||||
; normal operation
|
||||
|
||||
Function1f4::
|
||||
ld a, [hROMBank] ; 1f4
|
||||
ld [$d155], a ; 1f6
|
||||
ld a, [hSCX] ; 1f9
|
||||
ld [rSCX], a ; 1fb
|
||||
ld a, [hSCY] ; 1fd
|
||||
ld [rSCY], a ; 1ff
|
||||
call Function23e ; 201
|
||||
jr c, Function20f ; 204
|
||||
call Function14bb ; 206
|
||||
call Function15d0 ; 209
|
||||
call hPushOAM ; 20c
|
||||
Function20f::
|
||||
ld a, [hLCDCPointer] ; 20f
|
||||
or a ; 211
|
||||
jr z, Function219 ; 212
|
||||
ld c, a ; 214
|
||||
ld a, [$c700] ; 215
|
||||
ld [$ff00+c], a ; 218
|
||||
Function219::
|
||||
xor a ; 219
|
||||
ld [$ceea], a ; 21a
|
||||
ld a, [rIF] ; 21d
|
||||
ld b, a ; 21f
|
||||
xor a ; 220
|
||||
ld [rIF], a ; 221
|
||||
ld a, $2 ; 223
|
||||
ld [rIE], a ; 225
|
||||
ld a, b ; 227
|
||||
and $8 ; 228
|
||||
or $2 ; 22a
|
||||
ld [rIF], a ; 22c
|
||||
ei ; 22e
|
||||
ld a, BANK(Functione805c) ; 22f
|
||||
rst Bankswitch ; 231
|
||||
call Functione805c ; 232
|
||||
ld a, [$d155] ; 235
|
||||
rst Bankswitch ; 238
|
||||
ld a, $1f ; 239
|
||||
ld [rIE], a ; 23b
|
||||
ret ; 23d
|
||||
; 23e
|
||||
; rng
|
||||
; scx, scy, wy, wx
|
||||
; bg map buffer
|
||||
; palettes
|
||||
; dma transfer
|
||||
; bg map
|
||||
; tiles
|
||||
; oam
|
||||
; joypad
|
||||
; sound
|
||||
|
||||
Function23e::
|
||||
ld a, [hCGB] ; 23e
|
||||
and a ; 240
|
||||
jp nz, Functionbe3 ; 241
|
||||
ld a, [$cf43] ; 244
|
||||
ld [rBGP], a ; 247
|
||||
ld a, [$cf44] ; 249
|
||||
ld [rOBP0], a ; 24c
|
||||
ld a, [$cf45] ; 24e
|
||||
ld [rOBP1], a ; 251
|
||||
and a ; 253
|
||||
ret ; 254
|
||||
; 255
|
||||
; inc frame counter
|
||||
ld hl, hVBlankCounter
|
||||
inc [hl]
|
||||
|
||||
Function255::
|
||||
ld a, [hROMBank] ; 255
|
||||
ld [$d155], a ; 257
|
||||
call Function14bb ; 25a
|
||||
call Function15d0 ; 25d
|
||||
call hPushOAM ; 260
|
||||
call Function8e6 ; 263
|
||||
xor a ; 266
|
||||
ld [$ceea], a ; 267
|
||||
call Function1ebf ; 26a
|
||||
ld a, BANK(Functione805c) ; 26d
|
||||
rst Bankswitch ; 26f
|
||||
call Functione805c ; 270
|
||||
ld a, [$d155] ; 273
|
||||
rst Bankswitch ; 276
|
||||
ret ; 277
|
||||
; 278
|
||||
; advance random variables
|
||||
ld a, [rDIV]
|
||||
ld b, a
|
||||
ld a, [hRandomAdd]
|
||||
adc b
|
||||
ld [hRandomAdd], a
|
||||
|
||||
Function278::
|
||||
ld a, [hROMBank] ; 278
|
||||
ld [$d155], a ; 27a
|
||||
ld a, [hSCX] ; 27d
|
||||
ld [rSCX], a ; 27f
|
||||
call Functionbdf ; 281
|
||||
jr c, Function28c ; 284
|
||||
call Function14bb ; 286
|
||||
call Function15d0 ; 289
|
||||
Function28c::
|
||||
xor a ; 28c
|
||||
ld [$ceea], a ; 28d
|
||||
call Function8e6 ; 290
|
||||
xor a ; 293
|
||||
ld [rIF], a ; 294
|
||||
ld a, $2 ; 296
|
||||
ld [rIE], a ; 298
|
||||
ld [rIF], a ; 29a
|
||||
ei ; 29c
|
||||
ld a, BANK(Functione805c) ; 29d
|
||||
rst Bankswitch ; 29f
|
||||
call Functione805c ; 2a0
|
||||
ld a, [$d155] ; 2a3
|
||||
rst Bankswitch ; 2a6
|
||||
di ; 2a7
|
||||
xor a ; 2a8
|
||||
ld [rIF], a ; 2a9
|
||||
ld a, $1f ; 2ab
|
||||
ld [rIE], a ; 2ad
|
||||
ret ; 2af
|
||||
; 2b0
|
||||
ld a, [rDIV]
|
||||
ld b, a
|
||||
ld a, [hRandomSub]
|
||||
sbc b
|
||||
ld [hRandomSub], a
|
||||
|
||||
Function2b0::
|
||||
ld a, [hROMBank] ; 2b0
|
||||
ld [$d155], a ; 2b2
|
||||
ld a, BANK(Functione805c) ; 2b5
|
||||
rst Bankswitch ; 2b7
|
||||
call Functione805c ; 2b8
|
||||
ld a, [$d155] ; 2bb
|
||||
rst Bankswitch ; 2be
|
||||
xor a ; 2bf
|
||||
ld [$ceea], a ; 2c0
|
||||
ret ; 2c3
|
||||
; 2c4
|
||||
ld a, [hROMBank]
|
||||
ld [wROMBankBackup], a
|
||||
|
||||
Function2c4::
|
||||
ld a, [hVBlankCounter] ; 2c4
|
||||
inc a ; 2c6
|
||||
ld [hVBlankCounter], a ; 2c7
|
||||
ld a, [rDIV] ; 2c9
|
||||
ld b, a ; 2cb
|
||||
ld a, [hRandomAdd] ; 2cc
|
||||
adc b ; 2ce
|
||||
ld [hRandomAdd], a ; 2cf
|
||||
ld a, [rDIV] ; 2d1
|
||||
ld b, a ; 2d3
|
||||
ld a, [hRandomSub] ; 2d4
|
||||
sbc b ; 2d6
|
||||
ld [hRandomSub], a ; 2d7
|
||||
call Function8e6 ; 2d9
|
||||
ld a, [hROMBank] ; 2dc
|
||||
ld [$d155], a ; 2de
|
||||
ld a, [hSCX] ; 2e1
|
||||
ld [rSCX], a ; 2e3
|
||||
ld a, [hSCY] ; 2e5
|
||||
ld [rSCY], a ; 2e7
|
||||
ld a, [hWY] ; 2e9
|
||||
ld [rWY], a ; 2eb
|
||||
ld a, [hWX] ; 2ed
|
||||
ld [rWX], a ; 2ef
|
||||
call Function14bb ; 2f1
|
||||
call Function1458 ; 2f4
|
||||
call Function15d0 ; 2f7
|
||||
call Function1579 ; 2fa
|
||||
call Function162b ; 2fd
|
||||
call hPushOAM ; 300
|
||||
xor a ; 303
|
||||
ld [$ceea], a ; 304
|
||||
ld a, [$cee9] ; 307
|
||||
and a ; 30a
|
||||
jr z, Function311 ; 30b
|
||||
dec a ; 30d
|
||||
ld [$cee9], a ; 30e
|
||||
Function311::
|
||||
xor a ; 311
|
||||
ld [rIF], a ; 312
|
||||
ld a, $2 ; 314
|
||||
ld [rIE], a ; 316
|
||||
ld [rIF], a ; 318
|
||||
ei ; 31a
|
||||
ld a, BANK(Functione805c) ; 31b
|
||||
rst Bankswitch ; 31d
|
||||
call Functione805c ; 31e
|
||||
ld a, [$d155] ; 321
|
||||
rst Bankswitch ; 324
|
||||
di ; 325
|
||||
xor a ; 326
|
||||
ld [rIF], a ; 327
|
||||
ld a, $1f ; 329
|
||||
ld [rIE], a ; 32b
|
||||
ret ; 32d
|
||||
; 32e
|
||||
ld a, [hSCX]
|
||||
ld [rSCX], a
|
||||
ld a, [hSCY]
|
||||
ld [rSCY], a
|
||||
ld a, [hWY]
|
||||
ld [rWY], a
|
||||
ld a, [hWX]
|
||||
ld [rWX], a
|
||||
|
||||
; There's only time to call one of these in one vblank.
|
||||
; Calls are in order of priority.
|
||||
|
||||
call UpdateBGMapBuffer
|
||||
jr c, .done
|
||||
call UpdatePalsIfCGB
|
||||
jr c, .done
|
||||
call UpdateBGMap
|
||||
call Serve2bppRequest
|
||||
|
||||
; These have their own timing checks.
|
||||
|
||||
call Function1579
|
||||
call Function162b
|
||||
call Function1642
|
||||
|
||||
.done
|
||||
|
||||
ld a, [hOAMUpdate]
|
||||
and a
|
||||
jr nz, .done_oam
|
||||
call hPushOAM
|
||||
.done_oam
|
||||
|
||||
|
||||
; vblank-sensitive operations are done
|
||||
|
||||
|
||||
xor a
|
||||
ld [wVBlankOccurred], a
|
||||
|
||||
ld a, [wOverworldDelay]
|
||||
and a
|
||||
jr z, .ok
|
||||
dec a
|
||||
ld [wOverworldDelay], a
|
||||
.ok
|
||||
|
||||
ld a, [wTextDelayFrames]
|
||||
and a
|
||||
jr z, .ok2
|
||||
dec a
|
||||
ld [wTextDelayFrames], a
|
||||
.ok2
|
||||
|
||||
call Joypad
|
||||
ld a, BANK(_UpdateSound)
|
||||
rst Bankswitch
|
||||
call _UpdateSound
|
||||
ld a, [wROMBankBackup]
|
||||
rst Bankswitch
|
||||
ld a, [hSeconds]
|
||||
ld [hSecondsBackup], a
|
||||
ret
|
||||
|
||||
VBlank1:: ; 1f4
|
||||
; scx, scy
|
||||
; palettes
|
||||
; bg map
|
||||
; tiles
|
||||
; oam
|
||||
; sound / lcd stat
|
||||
ld a, [hROMBank]
|
||||
ld [wROMBankBackup], a
|
||||
ld a, [hSCX]
|
||||
ld [rSCX], a
|
||||
ld a, [hSCY]
|
||||
ld [rSCY], a
|
||||
call UpdatePals
|
||||
jr c, .done
|
||||
|
||||
call UpdateBGMap
|
||||
call Serve2bppRequest
|
||||
|
||||
call hPushOAM
|
||||
.done
|
||||
ld a, [hLCDCPointer]
|
||||
or a
|
||||
jr z, .skip_lcd
|
||||
ld c, a
|
||||
ld a, [wc700]
|
||||
ld [$ff00+c], a
|
||||
.skip_lcd
|
||||
xor a
|
||||
ld [wVBlankOccurred], a
|
||||
|
||||
; get requested ints
|
||||
ld a, [rIF]
|
||||
ld b, a
|
||||
; discard requested ints
|
||||
xor a
|
||||
ld [rIF], a
|
||||
; enable lcd stat
|
||||
ld a, %10 ; lcd stat
|
||||
ld [rIE], a
|
||||
; rerequest serial int if applicable (still disabled)
|
||||
; request lcd stat
|
||||
ld a, b
|
||||
and %1000 ; serial
|
||||
or %10 ; lcd stat
|
||||
ld [rIF], a
|
||||
|
||||
ei
|
||||
ld a, BANK(_UpdateSound)
|
||||
rst Bankswitch
|
||||
call _UpdateSound
|
||||
ld a, [wROMBankBackup]
|
||||
rst Bankswitch
|
||||
; enable ints
|
||||
ld a, %11111
|
||||
ld [rIE], a
|
||||
ret
|
||||
|
||||
UpdatePals:: ; 23e
|
||||
; update pals for either dmg or cgb
|
||||
ld a, [hCGB]
|
||||
and a
|
||||
jp nz, UpdateCGBPals
|
||||
|
||||
; update gb pals
|
||||
ld a, [wBGP]
|
||||
ld [rBGP], a
|
||||
ld a, [wOBP0]
|
||||
ld [rOBP0], a
|
||||
ld a, [wOPB1]
|
||||
ld [rOBP1], a
|
||||
and a
|
||||
ret
|
||||
|
||||
VBlank4:: ; 255
|
||||
; bg map
|
||||
; tiles
|
||||
; oam
|
||||
; joypad
|
||||
; serial
|
||||
; sound
|
||||
|
||||
ld a, [hROMBank]
|
||||
ld [wROMBankBackup], a
|
||||
|
||||
call UpdateBGMap
|
||||
call Serve2bppRequest
|
||||
|
||||
call hPushOAM
|
||||
|
||||
call Joypad
|
||||
|
||||
xor a
|
||||
ld [wVBlankOccurred], a
|
||||
|
||||
call AskSerial
|
||||
|
||||
ld a, BANK(_UpdateSound)
|
||||
rst Bankswitch
|
||||
call _UpdateSound
|
||||
|
||||
ld a, [wROMBankBackup]
|
||||
rst Bankswitch
|
||||
ret
|
||||
|
||||
VBlank5:: ; 278
|
||||
; scx
|
||||
; palettes
|
||||
; bg map
|
||||
; tiles
|
||||
; joypad
|
||||
|
||||
ld a, [hROMBank]
|
||||
ld [wROMBankBackup], a
|
||||
|
||||
ld a, [hSCX]
|
||||
ld [rSCX], a
|
||||
|
||||
call UpdatePalsIfCGB
|
||||
jr c, .done
|
||||
|
||||
call UpdateBGMap
|
||||
call Serve2bppRequest
|
||||
.done
|
||||
|
||||
xor a
|
||||
ld [wVBlankOccurred], a
|
||||
|
||||
call Joypad
|
||||
|
||||
xor a
|
||||
ld [rIF], a
|
||||
ld a, %10 ; lcd stat
|
||||
ld [rIE], a
|
||||
; request lcd stat
|
||||
ld [rIF], a
|
||||
|
||||
ei
|
||||
ld a, BANK(_UpdateSound)
|
||||
rst Bankswitch
|
||||
call _UpdateSound
|
||||
ld a, [wROMBankBackup]
|
||||
rst Bankswitch
|
||||
di
|
||||
|
||||
xor a
|
||||
ld [rIF], a
|
||||
; enable ints
|
||||
ld a, %11111
|
||||
ld [rIE], a
|
||||
ret
|
||||
|
||||
VBlank2:: ; 2b0
|
||||
; sound only
|
||||
|
||||
ld a, [hROMBank]
|
||||
ld [wROMBankBackup], a
|
||||
|
||||
ld a, BANK(_UpdateSound)
|
||||
rst Bankswitch
|
||||
call _UpdateSound
|
||||
|
||||
ld a, [wROMBankBackup]
|
||||
rst Bankswitch
|
||||
|
||||
xor a
|
||||
ld [wVBlankOccurred], a
|
||||
ret
|
||||
|
||||
VBlank3:: ; 2c4
|
||||
; scx, scy
|
||||
; palettes
|
||||
; bg map
|
||||
; tiles
|
||||
; oam
|
||||
; sound / lcd stat
|
||||
|
||||
ld a, [hVBlankCounter]
|
||||
inc a
|
||||
ld [hVBlankCounter], a
|
||||
|
||||
ld a, [rDIV]
|
||||
ld b, a
|
||||
ld a, [hRandomAdd]
|
||||
adc b
|
||||
ld [hRandomAdd], a
|
||||
|
||||
ld a, [rDIV]
|
||||
ld b, a
|
||||
ld a, [hRandomSub]
|
||||
sbc b
|
||||
ld [hRandomSub], a
|
||||
|
||||
call Joypad
|
||||
|
||||
ld a, [hROMBank]
|
||||
ld [wROMBankBackup], a
|
||||
|
||||
ld a, [hSCX]
|
||||
ld [rSCX], a
|
||||
ld a, [hSCY]
|
||||
ld [rSCY], a
|
||||
|
||||
ld a, [hWY]
|
||||
ld [rWY], a
|
||||
ld a, [hWX]
|
||||
ld [rWX], a
|
||||
|
||||
call UpdateBGMap
|
||||
call UpdateBGMapBuffer
|
||||
|
||||
call Serve2bppRequest
|
||||
|
||||
call Function1579
|
||||
call Function162b
|
||||
|
||||
call hPushOAM
|
||||
|
||||
xor a
|
||||
ld [wVBlankOccurred], a
|
||||
|
||||
ld a, [wTextDelayFrames]
|
||||
and a
|
||||
jr z, .okay
|
||||
dec a
|
||||
ld [wTextDelayFrames], a
|
||||
.okay
|
||||
|
||||
xor a
|
||||
ld [rIF], a
|
||||
ld a, %10 ; lcd stat
|
||||
ld [rIE], a
|
||||
; request lcd stat
|
||||
ld [rIF], a
|
||||
|
||||
ei
|
||||
ld a, BANK(_UpdateSound)
|
||||
rst Bankswitch
|
||||
call _UpdateSound
|
||||
ld a, [wROMBankBackup]
|
||||
rst Bankswitch
|
||||
di
|
||||
|
||||
xor a
|
||||
ld [rIF], a
|
||||
; enable ints
|
||||
ld a, %11111
|
||||
ld [rIE], a
|
||||
ret
|
||||
|
|
|
|||
10
main.asm
10
main.asm
|
|
@ -103,7 +103,13 @@ SECTION "bank22", DATA, BANK[$22]
|
|||
dr $88000, $8c000
|
||||
|
||||
SECTION "bank23", DATA, BANK[$23]
|
||||
dr $8c000, $90000
|
||||
dr $8c000, $8c366
|
||||
|
||||
_TimeOfDayPals:: ; 8c366
|
||||
dr $8c366, $8c397
|
||||
|
||||
_UpdateTimePals:: ; 8c397
|
||||
dr $8c397, $90000
|
||||
|
||||
SECTION "bank24", DATA, BANK[$24]
|
||||
dr $90000, $94000
|
||||
|
|
@ -174,7 +180,7 @@ SECTION "bank39", DATA, BANK[$39]
|
|||
SECTION "bank3a", DATA, BANK[$3a]
|
||||
dr $e8000, $e805c
|
||||
|
||||
Functione805c::
|
||||
_UpdateSound::
|
||||
dr $e805c, $ec000
|
||||
|
||||
SECTION "bank3b", DATA, BANK[$3b]
|
||||
|
|
|
|||
37
rst.asm
Normal file
37
rst.asm
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
; rst vectors
|
||||
|
||||
SECTION "rst0",ROM0[0]
|
||||
di
|
||||
jp Start
|
||||
|
||||
SECTION "rst8",ROM0[FarCall]
|
||||
jp FarCall_hl
|
||||
|
||||
SECTION "rst10",ROM0[Bankswitch]
|
||||
ld [hROMBank], a
|
||||
ld [MBC3RomBank], a
|
||||
ret
|
||||
|
||||
SECTION "rst18",ROM0[$18]
|
||||
rst $38
|
||||
|
||||
SECTION "rst20",ROM0[$20]
|
||||
rst $38
|
||||
|
||||
SECTION "rst28",ROM0[JumpTable]
|
||||
push de
|
||||
ld e, a
|
||||
ld d, 0
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
pop de
|
||||
jp [hl]
|
||||
|
||||
; SECTION "rst30",ROM0[$30]
|
||||
; rst30 is midst rst28
|
||||
|
||||
SECTION "rst38",ROM0[$38]
|
||||
rst $38
|
||||
Loading…
Reference in New Issue
Block a user