diff options
-rw-r--r-- | contents.asm | 130 | ||||
-rw-r--r-- | data/pokemon/egg_moves.asm | 1 | ||||
-rw-r--r-- | data/pokemon/evos_attacks.asm | 1 | ||||
-rw-r--r-- | home.asm | 8 | ||||
-rw-r--r-- | home/delay.asm | 23 | ||||
-rw-r--r-- | home/fade.asm | 53 | ||||
-rw-r--r-- | home/vblank.asm | 40 | ||||
-rw-r--r-- | main.asm | 1 | ||||
-rw-r--r-- | pokegold.link | 4 | ||||
-rw-r--r-- | pokesilver.link | 4 | ||||
-rw-r--r-- | wram.asm | 1 |
11 files changed, 77 insertions, 189 deletions
diff --git a/contents.asm b/contents.asm deleted file mode 100644 index 5d65c938..00000000 --- a/contents.asm +++ /dev/null @@ -1,130 +0,0 @@ -; Doubles as bank constants. - -; main.o - -ROOFS EQU $7 -TILESETS_1 EQU $6 -TILESETS_2 EQU $7 -TILESETS_3 EQU $8 -TILESETS_4 EQU $C -TILESETS_5 EQU $2D -TILESETS_6 EQU $37 -TILESETS_7 EQU $77 -TILESETS_8 EQU $78 - - -; data/pokemon/egg_moves.o - -EGG_MOVES EQU $8 - - -; data/pokemon/evos_attacks.o - -EVOS_ATTACKS EQU $10 - - -; data/pokedex/entries.o - -POKEDEX_ENTRIES_1 EQU $60 -POKEDEX_ENTRIES_2 EQU $6E -POKEDEX_ENTRIES_3 EQU $73 -POKEDEX_ENTRIES_4 EQU $74 - - -; engine/events.o -; engine/scripting.o -; engine/events_2.o -EVENTS EQU $25 - - -; engine/credits.o - -CREDITS EQU $42 - - -; gfx/pics.o - -PIC_POINTERS EQU $48 -UNOWN_PIC_POINTERS EQU $49 -TRAINER_PIC_POINTERS EQU $4A - -PICS_FIX EQU $36 - -PICS_1 EQU $48 -PICS_2 EQU $49 -PICS_3 EQU $4A -PICS_4 EQU $4B -PICS_5 EQU $4C -PICS_6 EQU $4D -PICS_7 EQU $4E -PICS_8 EQU $4F -PICS_9 EQU $50 -PICS_10 EQU $51 -PICS_11 EQU $52 -PICS_12 EQU $53 -PICS_13 EQU $54 -PICS_14 EQU $55 -PICS_15 EQU $56 -PICS_16 EQU $57 -PICS_17 EQU $58 -PICS_18 EQU $59 -PICS_19 EQU $5A - - -; maps.o - -MAP_HEADERS EQU $25 - -MAPS_1 EQU $2A -MAPS_2 EQU $2B -MAPS_3 EQU $2C - -MAP_SCRIPTS_1 EQU $15 -MAP_SCRIPTS_2 EQU $16 -MAP_SCRIPTS_3 EQU $17 -MAP_SCRIPTS_4 EQU $18 -MAP_SCRIPTS_5 EQU $1A -MAP_SCRIPTS_6 EQU $1B -MAP_SCRIPTS_7 EQU $1C -MAP_SCRIPTS_8 EQU $1D -MAP_SCRIPTS_9 EQU $1E -MAP_SCRIPTS_10 EQU $1F -MAP_SCRIPTS_11 EQU $26 -MAP_SCRIPTS_12 EQU $27 -MAP_SCRIPTS_13 EQU $60 -MAP_SCRIPTS_14 EQU $61 -MAP_SCRIPTS_15 EQU $62 -MAP_SCRIPTS_16 EQU $63 -MAP_SCRIPTS_17 EQU $64 -MAP_SCRIPTS_18 EQU $65 -MAP_SCRIPTS_19 EQU $66 -MAP_SCRIPTS_20 EQU $67 -MAP_SCRIPTS_21 EQU $68 -MAP_SCRIPTS_22 EQU $69 -MAP_SCRIPTS_23 EQU $6A -MAP_SCRIPTS_24 EQU $6B -MAP_SCRIPTS_25 EQU $6C - - -; audio.o - -AUDIO EQU $3A - -SONGS_1 EQU $3A -SONGS_2 EQU $3B -SONGS_3 EQU $3C -SONGS_4 EQU $3D -SONGS_5 EQU $5E - -EXTRA_SONGS_1 EQU $7 -EXTRA_SONGS_2 EQU $33 - -SOUND_EFFECTS EQU $3C -CRYSTAL_SOUND_EFFECTS EQU $5E - -CRIES EQU $3C - - -; misc.o - -MISC_CRYSTAL EQU $5E diff --git a/data/pokemon/egg_moves.asm b/data/pokemon/egg_moves.asm index 3e353ba4..a31a6d23 100644 --- a/data/pokemon/egg_moves.asm +++ b/data/pokemon/egg_moves.asm @@ -1,4 +1,3 @@ -INCLUDE "contents.asm" INCLUDE "constants.asm" SECTION "Egg Moves", ROMX, BANK[EGG_MOVES] diff --git a/data/pokemon/evos_attacks.asm b/data/pokemon/evos_attacks.asm index 8fc93897..dcacee0d 100644 --- a/data/pokemon/evos_attacks.asm +++ b/data/pokemon/evos_attacks.asm @@ -1,4 +1,3 @@ -INCLUDE "contents.asm" INCLUDE "constants.asm" SECTION "Evolutions and Attacks", ROMX, BANK[EVOS_ATTACKS] @@ -1,16 +1,18 @@ -INCLUDE "contents.asm" INCLUDE "constants.asm" ; rst vectors INCLUDE "home/rst.asm" INCLUDE "home/interrupts.asm" -SECTION "start", ROM0 +SECTION "Header", ROM0 + Start:: nop jp _Start -SECTION "bank0", ROM0 + +SECTION "Home", ROM0 + INCLUDE "home/vblank.asm" INCLUDE "home/delay.asm" INCLUDE "home/rtc.asm" diff --git a/home/delay.asm b/home/delay.asm index b9b7ac1f..4ad25ef2 100644 --- a/home/delay.asm +++ b/home/delay.asm @@ -1,16 +1,19 @@ -DelayFrame:: ; 32e - ld a, $1 - ld [$ceea], a -.asm_333 - halt - ld a, [$ceea] +DelayFrame:: +; Wait for one frame + ld a, 1 + ld [wVBlankOccurred], a + +; Wait for the next VBlank, halting to conserve battery +.halt + halt ; rgbasm adds a nop after this instruction by default + ld a, [wVBlankOccurred] and a - jr nz, .asm_333 + jr nz, .halt ret -DelayFrames:: ; 33c -.loop +DelayFrames:: +; Wait c frames call DelayFrame dec c - jr nz, .loop + jr nz, DelayFrames ret diff --git a/home/fade.asm b/home/fade.asm index 3d0afdce..f5851099 100644 --- a/home/fade.asm +++ b/home/fade.asm @@ -1,5 +1,6 @@ -Function360:: ; 360 (0:0360) -; XXX +; Functions to fade the screen in and out. + +Unreferenced_Function48c:: ; TimeOfDayFade ld a, [wTimeOfDayPal] ld b, a @@ -9,6 +10,7 @@ Function360:: ; 360 (0:0360) ld l, a jr nc, .okay dec h + .okay ld a, [hli] ldh [rBGP], a @@ -42,8 +44,10 @@ RotateThreePalettesRight:: .dmg ld hl, IncGradGBPalTable_13 ld b, 3 + RotatePalettesRight:: -.loop +; Rotate palettes to the right and fill with loaded colors from the left +; If we're already at the leftmost color, fill with the leftmost color push de ld a, [hli] call DmgToCgbBGPals @@ -56,7 +60,7 @@ RotatePalettesRight:: call DelayFrames pop de dec b - jr nz, .loop + jr nz, RotatePalettesRight ret RotateFourPalettesLeft:: @@ -79,11 +83,14 @@ RotateThreePalettesLeft:: ld hl, IncGradGBPalTable_07 - 1 ld b, 3 jr RotatePalettesLeft + .dmg ld hl, IncGradGBPalTable_15 - 1 ld b, 3 + RotatePalettesLeft:: -.loop +; Rotate palettes to the left and fill with loaded colors from the right +; If we're already at the rightmost color, fill with the rightmost color push de ld a, [hld] ld d, a @@ -96,27 +103,27 @@ RotatePalettesLeft:: call DelayFrames pop de dec b - jr nz, .loop + jr nz, RotatePalettesLeft ret -IncGradGBPalTable_00:: db %11111111, %11111111, %11111111 -IncGradGBPalTable_01:: db %11111110, %11111110, %11111110 -IncGradGBPalTable_02:: db %11111001, %11111001, %11111001 -IncGradGBPalTable_03:: db %11100100, %11100100, %11100100 +IncGradGBPalTable_00:: dc 3,3,3,3, 3,3,3,3, 3,3,3,3 +IncGradGBPalTable_01:: dc 3,3,3,2, 3,3,3,2, 3,3,3,2 +IncGradGBPalTable_02:: dc 3,3,2,1, 3,3,2,1, 3,3,2,1 +IncGradGBPalTable_03:: dc 3,2,1,0, 3,2,1,0, 3,2,1,0 -IncGradGBPalTable_04:: db %11100100, %11100100, %11100100 -IncGradGBPalTable_05:: db %10010000, %10010000, %10010000 -IncGradGBPalTable_06:: db %01000000, %01000000, %01000000 +IncGradGBPalTable_04:: dc 3,2,1,0, 3,2,1,0, 3,2,1,0 +IncGradGBPalTable_05:: dc 2,1,0,0, 2,1,0,0, 2,1,0,0 +IncGradGBPalTable_06:: dc 1,0,0,0, 1,0,0,0, 1,0,0,0 -IncGradGBPalTable_07:: db %00000000, %00000000, %00000000 -; bgp obp1 obp2 -IncGradGBPalTable_08:: db %11111111, %11111111, %11111111 -IncGradGBPalTable_09:: db %11111110, %11111110, %11111000 -IncGradGBPalTable_10:: db %11111001, %11100100, %11100100 -IncGradGBPalTable_11:: db %11100100, %11010000, %11100000 +IncGradGBPalTable_07:: dc 0,0,0,0, 0,0,0,0, 0,0,0,0 +; bgp obp1 obp2 +IncGradGBPalTable_08:: dc 3,3,3,3, 3,3,3,3, 3,3,3,3 +IncGradGBPalTable_09:: dc 3,3,3,2, 3,3,3,2, 3,3,2,0 +IncGradGBPalTable_10:: dc 3,3,2,1, 3,2,1,0, 3,2,1,0 +IncGradGBPalTable_11:: dc 3,2,1,0, 3,1,0,0, 3,2,0,0 -IncGradGBPalTable_12:: db %11100100, %11010000, %11100000 -IncGradGBPalTable_13:: db %10010000, %10000000, %10010000 -IncGradGBPalTable_14:: db %01000000, %01000000, %01000000 +IncGradGBPalTable_12:: dc 3,2,1,0, 3,1,0,0, 3,2,0,0 +IncGradGBPalTable_13:: dc 2,1,0,0, 2,0,0,0, 2,1,0,0 +IncGradGBPalTable_14:: dc 1,0,0,0, 1,0,0,0, 1,0,0,0 -IncGradGBPalTable_15:: db %00000000, %00000000, %00000000 +IncGradGBPalTable_15:: dc 0,0,0,0, 0,0,0,0, 0,0,0,0
\ No newline at end of file diff --git a/home/vblank.asm b/home/vblank.asm index 9c360586..04726475 100644 --- a/home/vblank.asm +++ b/home/vblank.asm @@ -1,30 +1,37 @@ +; VBlank is the interrupt responsible for updating VRAM. + VBlank:: push af push bc push de push hl + ldh a, [hVBlank] - and $7 + and 7 + ld e, a - ld d, $0 - ld hl, .blanks + ld d, 0 + ld hl, .VBlanks add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a + ld de, .return push de jp hl -.return + +.return: call GameTimer + pop hl pop de pop bc pop af reti -.blanks +.VBlanks: dw VBlank0 dw VBlank1 dw VBlank2 @@ -33,9 +40,9 @@ VBlank:: dw VBlank5 dw VBlank0 dw VBlank0 ; just in case -;180 -VBlank0:: ; 180 + +VBlank0:: ; normal operation ; rng @@ -102,10 +109,8 @@ VBlank0:: ; 180 call hTransferVirtualOAM .done_oam - ; vblank-sensitive operations are done - xor a ld [wVBlankOccurred], a @@ -124,16 +129,19 @@ VBlank0:: ; 180 .ok2 call Joypad + ld a, BANK(_UpdateSound) rst Bankswitch call _UpdateSound ld a, [wROMBankBackup] rst Bankswitch + ldh a, [hSeconds] ldh [hSecondsBackup], a + ret -VBlank1:: ; 1f4 +VBlank1:: ; scx, scy ; palettes ; bg map @@ -191,8 +199,9 @@ VBlank1:: ; 1f4 ldh [rIE], a ret -UpdatePals:: ; 23e +UpdatePals:: ; update pals for either dmg or cgb + ldh a, [hCGB] and a jp nz, UpdateCGBPals @@ -204,10 +213,11 @@ UpdatePals:: ; 23e ldh [rOBP0], a ld a, [wOPB1] ldh [rOBP1], a + and a ret -VBlank4:: ; 255 +VBlank4:: ; bg map ; tiles ; oam @@ -238,7 +248,7 @@ VBlank4:: ; 255 rst Bankswitch ret -VBlank5:: ; 278 +VBlank5:: ; scx ; palettes ; bg map @@ -285,7 +295,7 @@ VBlank5:: ; 278 ldh [rIE], a ret -VBlank2:: ; 2b0 +VBlank2:: ; sound only ldh a, [hROMBank] @@ -302,7 +312,7 @@ VBlank2:: ; 2b0 ld [wVBlankOccurred], a ret -VBlank3:: ; 2c4 +VBlank3:: ; scx, scy ; palettes ; bg map @@ -1,4 +1,3 @@ -INCLUDE "contents.asm" INCLUDE "constants.asm" diff --git a/pokegold.link b/pokegold.link index 0ce9ca26..cb686478 100644 --- a/pokegold.link +++ b/pokegold.link @@ -24,9 +24,9 @@ ROM0 org $0060 "joypad" org $0100 - "start" + "Header" org $0150 - "bank0" + "Home" ROMX $01 org $4000 "bank1" diff --git a/pokesilver.link b/pokesilver.link index 0ce9ca26..cb686478 100644 --- a/pokesilver.link +++ b/pokesilver.link @@ -24,9 +24,9 @@ ROM0 org $0060 "joypad" org $0100 - "start" + "Header" org $0150 - "bank0" + "Home" ROMX $01 org $4000 "bank1" @@ -1,4 +1,3 @@ -INCLUDE "contents.asm" INCLUDE "constants.asm" INCLUDE "macros/wram.asm" |