-
Notifications
You must be signed in to change notification settings - Fork 1k
Restoring Japanese Title Screen from Red and Green
Gnome67 edited this page Oct 25, 2023
·
6 revisions
The japanese Title Screen from Red and Green is displayed a bit different to japanese Blue and international releases. With this code, we'll restore that.
Code from pokered-jp (luckytyphlosion).
...
DisplayTitleScreen:
call GBPalWhiteOut
ld a, $1
ldh [hAutoBGTransferEnabled], a
xor a
ldh [hTileAnimations], a
- ldh [hSCX], a
- ld a, $40
+ ld a, $90
- ldh [hSCY], a
+ ldh [hSCX], a
ld a, $90
ldh [hWY], a
call ClearScreen
call DisableLCD
call LoadFontTilePatterns
ld hl, NintendoCopyrightLogoGraphics
ld de, vTitleLogo2 tile 16
- ld bc, 5 tiles
+ ld bc, 13 tiles
ld a, BANK(NintendoCopyrightLogoGraphics)
call FarCopyData2
- ld hl, GamefreakLogoGraphics
- ld de, vTitleLogo2 tile (16 + 5)
- ld bc, 9 tiles
- ld a, BANK(GamefreakLogoGraphics)
- call FarCopyData2
ld hl, PokemonLogoGraphics
ld de, vTitleLogo
ld bc, $60 tiles
ld a, BANK(PokemonLogoGraphics)
...
...
.pokemonLogoLastTileRowLoop
ld [hli], a
inc a
dec b
jr nz, .pokemonLogoLastTileRowLoop
call DrawPlayerCharacter
-; put a pokeball in the player's hand
- ld hl, wShadowOAMSprite10
- ld a, $74
- ld [hl], a
; place tiles for title screen copyright
- hlcoord 2, 17
- ld de, .tileScreenCopyrightTiles
- ld b, $10
+ hlcoord 3, 17
+ ld a, $41
+ ld b, 13 tiles
.tileScreenCopyrightTilesLoop
- ld a, [de]
ld [hli], a
- inc de
+ inc a
dec b
jr nz, .tileScreenCopyrightTilesLoop
- jr .next
-.tileScreenCopyrightTiles
- db $41,$42,$43,$42,$44,$42,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E ; ©'95.'96.'98 GAME FREAK inc.
-.next
call SaveScreenTilesToBuffer2
+ call PrintGameVersionOnTitleScreen
+ call SaveScreenTilesToBuffer1
call LoadScreenTilesFromBuffer2
call EnableLCD
IF DEF(_RED)
ld a, STARTER1 ; which Pokemon to show first on the title screen
ENDC
IF DEF(_BLUE)
ld a, STARTER2 ; which Pokemon to show first on the title screen
ENDC
ld [wTitleMonSpecies], a
call LoadTitleMonSprite
ld a, HIGH(vBGMap0 + $300)
call TitleScreenCopyTileMapToVRAM
- call SaveScreenTilesToBuffer1
ld a, $40
ldh [hWY], a
- call LoadScreenTilesFromBuffer2
ld a, HIGH(vBGMap0)
call TitleScreenCopyTileMapToVRAM
ld b, SET_PAL_TITLE_SCREEN
call RunPaletteCommand
call GBPalNormal
ld a, %11100100
ldh [rOBP0], a
+ ld a, SFX_INTRO_WHOOSH
+ call PlaySound
+.scrollInLogoLoop
+ call DelayFrame
+ ld a, [hSCX]
+ add 4
+ ld [hSCX], a
+ jr nz, .scrollInLogoLoop
+ ld a, $90
+ ldh [hWY], a
+ ld c, $14
+ call DelayFrames
+ call PrintGameVersionOnTitleScreen
+ call Delay3
+ ld a, HIGH(vBGMap1)
+ call TitleScreenCopyTileMapToVRAM
+ call LoadScreenTilesFromBuffer1
+ call Delay3
+ ld a, MUSIC_TITLE_SCREEN
+ ld [wNewSoundID], a
+ call PlaySound
-; make pokemon logo bounce up and down
- ld bc, hSCY ; background scroll Y
- ld hl, .TitleScreenPokemonLogoYScrolls
-.bouncePokemonLogoLoop
- ld a, [hli]
- and a
- jr z, .finishedBouncingPokemonLogo
- ld d, a
- cp -3
- jr nz, .skipPlayingSound
- ld a, SFX_INTRO_CRASH
- call PlaySound
-.skipPlayingSound
- ld a, [hli]
- ld e, a
- call .ScrollTitleScreenPokemonLogo
- jr .bouncePokemonLogoLoop
-.TitleScreenPokemonLogoYScrolls:
-; Controls the bouncing effect of the Pokemon logo on the title screen
- db -4,16 ; y scroll amount, number of times to scroll
- db 3,4
- db -3,4
- db 2,2
- db -2,2
- db 1,2
- db -1,2
- db 0 ; terminate list with 0
-.ScrollTitleScreenPokemonLogo:
-; Scrolls the Pokemon logo on the title screen to create the bouncing effect
-; Scrolls d pixels e times
- call DelayFrame
- ld a, [bc] ; background scroll Y
- add d
- ld [bc], a
- dec e
- jr nz, .ScrollTitleScreenPokemonLogo
- ret
-.finishedBouncingPokemonLogo
- call LoadScreenTilesFromBuffer1
- ld c, 36
- call DelayFrames
- ld a, SFX_INTRO_WHOOSH
- call PlaySound
-; scroll game version in from the right
- call PrintGameVersionOnTitleScreen
- ld a, SCREEN_HEIGHT_PX
- ldh [hWY], a
- ld d, 144
-.scrollTitleScreenGameVersionLoop
- ld h, d
- ld l, 64
- call ScrollTitleScreenGameVersion
- ld h, 0
- ld l, 80
- call ScrollTitleScreenGameVersion
- ld a, d
- add 4
- ld d, a
- and a
- jr nz, .scrollTitleScreenGameVersionLoop
- ld a, HIGH(vBGMap1)
- call TitleScreenCopyTileMapToVRAM
- call LoadScreenTilesFromBuffer2
- call PrintGameVersionOnTitleScreen
- call Delay3
- call WaitForSoundToFinish
- ld a, MUSIC_TITLE_SCREEN
- ld [wNewSoundID], a
- call PlaySound
- xor a
- ld [wUnusedCC5B], a
; Keep scrolling in new mons indefinitely until the user performs input.
.awaitUserInterruptionLoop
- ld c, 200
+ ld c, 255
call CheckForUserInterruption
jr c, .finishedWaiting
call TitleScreenScrollInMon
- ld c, 1
- call CheckForUserInterruption
- jr c, .finishedWaiting
- farcall TitleScreenAnimateBallIfStarterOut
call TitleScreenPickNewMon
jr .awaitUserInterruptionLoop
.finishedWaiting
ld a, [wTitleMonSpecies]
call PlayCry
call WaitForSoundToFinish
call GBPalWhiteOutWithDelay3
call ClearSprites
xor a
ldh [hWY], a
- inc a
+ ld a, 1
ldh [hAutoBGTransferEnabled], a
call ClearScreen
ld a, HIGH(vBGMap0)
...
...
call LoadTitleMonSprite
ld a, $90
ldh [hWY], a
- ld d, 1 ; scroll out
- farcall TitleScroll
- ret
+ ld d, $A0
+ ld c, $C
+ jp TitleScroll
TitleScreenScrollInMon:
ld d, 0 ; scroll in
- farcall TitleScroll
+ ld c, $14
+ call TitleScroll
xor a
ldh [hWY], a
ret
+TitleScroll:
+ ld h, d
+ ld l, $48
+ call .Scroll
+ ld h, 0
+ ld l, $88
+ call .Scroll
+ ld a, d
+ add 8
+ ld d, a
+ dec c
+ jr nz, TitleScroll
+ ret
+.Scroll
.wait
ldh a, [rLY]
cp l
jr nz, .wait
ld a, h
ldh [rSCX], a
.wait2
ldh a, [rLY]
cp h
jr z, .wait2
ret
DrawPlayerCharacter:
ld hl, PlayerCharacterTitleGraphics
ld de, vSprites
ld bc, PlayerCharacterTitleGraphicsEnd - PlayerCharacterTitleGraphics
ld a, BANK(PlayerCharacterTitleGraphics)
call FarCopyData2
call ClearSprites
xor a
ld [wPlayerCharacterOAMTile], a
ld hl, wShadowOAM
- lb de, $60, $5a
+ lb de, $60, $30
ld b, 7
.loop
push de
...
...
LoadTitleMonSprite:
ld [wcf91], a
ld [wd0b5], a
- hlcoord 5, 10
+ hlcoord 9, 10
call GetMonHeader
jp LoadFrontSpriteByMonIndex
TitleScreenCopyTileMapToVRAM:
ldh [hAutoBGTransferDest + 1], a
jp Delay3
LoadCopyrightAndTextBoxTiles:
xor a
ldh [hWY], a
call ClearScreen
call LoadTextBoxTilePatterns
LoadCopyrightTiles:
ld de, NintendoCopyrightLogoGraphics
ld hl, vChars2 tile $60
- lb bc, BANK(NintendoCopyrightLogoGraphics), (GamefreakLogoGraphicsEnd - NintendoCopyrightLogoGraphics) / $10
+ lb bc, BANK(NintendoCopyrightLogoGraphics), (NintendoCopyrightLogoGraphicsEnd - NintendoCopyrightLogoGraphics) / $10
call CopyVideoData
- hlcoord 2, 7
+ hlcoord 5, 7
ld de, CopyrightTextString
jp PlaceString
CopyrightTextString:
- db $60,$61,$62,$61,$63,$61,$64,$7F,$65,$66,$67,$68,$69,$6A ; ©'95.'96.'98 Nintendo
- next $60,$61,$62,$61,$63,$61,$64,$7F,$6B,$6C,$6D,$6E,$6F,$70,$71,$72 ; ©'95.'96.'98 Creatures inc.
- next $60,$61,$62,$61,$63,$61,$64,$7F,$73,$74,$75,$76,$77,$78,$79,$7A,$7B ; ©'95.'96.'98 GAME FREAK inc.
+ db $60,$61,$62,$63,$6D,$6E,$6F,$70,$71,$72 ; ©1995 Nintendo
+ next $60,$61,$62,$63,$73,$74,$75,$76,$77,$78,$6B,$6C ; ©1995 Creatures inc.
+ next $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C ; ©1995 GAME FREAK inc.
db "@"
...
...
NintendoCopyrightLogoGraphics: INCBIN "gfx/splash/copyright.2bpp"
+NintendoCopyrightLogoGraphicsEnd:
-GamefreakLogoGraphics: INCBIN "gfx/title/gamefreak_inc.2bpp"
-GamefreakLogoGraphicsEnd:
TextBoxGraphics:: INCBIN "gfx/font/font_extra.2bpp"
TextBoxGraphicsEnd::
...
Now you can delete gfx/title/gamefreak_inc.png
...
SECTION "Slot Machines", ROMX
-INCLUDE "engine/movie/title2.asm"
INCLUDE "engine/battle/link_battle_versus_text.asm"
INCLUDE "engine/slots/slot_machine.asm"
INCLUDE "engine/events/pewter_guys.asm"
INCLUDE "engine/math/multiply_divide.asm"
INCLUDE "engine/slots/game_corner_slots.asm"
SECTION "Battle Engine 7", ROMX
...
Now you can delete engine/movie/title2.asm
Change gfx/title/player.png from this
The copyright gfx/splash/copyright.png from this
To restore the original SFX_SHOOTING_STAR:
SFX_Shooting_Star_Ch5:
- duty_cycle_pattern 3, 2, 1, 0
- pitch_sweep 2, -7
+ duty_cycle 2
+ pitch_sweep 5, -7
square_note 4, 4, 0, 2016
square_note 4, 6, 0, 2016
square_note 4, 8, 0, 2016
square_note 8, 10, 0, 2016
square_note 8, 10, 0, 2016
square_note 8, 8, 0, 2016
square_note 8, 6, 0, 2016
square_note 8, 3, 0, 2016
square_note 15, 1, 2, 2016
pitch_sweep 0, 8
sound_ret