Custom Title Screen
Zeldix :: Zelda III Hacking :: Patches :: ASM
Page 1 of 1
20210625

Custom Title Screen
Here is a tutorial on how to add a custom background for your title screen using more than the original gfx allow for.
Here is a link to the tutorial:
lw2.minecraftnoob.com/Jared/titleScreen.html
Here is a video of the title screen I made for my hack using this same method:
Here is the ASM just in case for any reason the website goes down:
Here is a link to the tutorial:
lw2.minecraftnoob.com/Jared/titleScreen.html
Here is a video of the title screen I made for my hack using this same method:
Here is the ASM just in case for any reason the website goes down:
- Code:
org $0CC341 ;initialize some gfx settings at the beginning so that it displays correctly after the
JSL Main1 ;history cut scene plays And inserts the gfx to the vram and inserts a custom palette
org $0CC27E ; disables BG 3 during the opening sequence as it is not used
db #$11
org $0CC51D ; disables BG 3 during the opening sequence as it is not used
db #$01
org $0CC2AE ; applies the tilemap after the original is placed in
JSL Main2
org $0CEE39 ; at the beginning of the history cut scene reset the bg address
JSL Reset1
org $0CCDE2 ; once the select screen appears, reset the bg address
JSL Reset2
org $218000
; ==============================================================================
Main1:
{
JSL $00E384 ;replaces the Graphics_LoadCommonSprLong that was replaced
LDX #$52 : STX $210B ; Changes where BG 1 pulls its graphics from
LDA.b #$11 : STA $1C ;disables BG3
LDA.b #$01 : STA $1D
LDA.b #$11 : STA $212C
LDA.b #$01 : STA $212D
JSR ApplyGraphics ; inserts the new gfx into the vram
JSR ApplyNewColors ; inserts the new colors into the cram
SEP #$30
RTL
}
; ==============================================================================
Main2:
{
JSL $0CC404 ; $64404* that was replaced
LDA $35 : CMP.b #$01 : BEQ .notfirst ;$35 is free ram that I am using to see whether this is the first time this is being run or not
LDA.b #$01 : STA $35 ; if it is set $35 to 1 so we don't apply the tilemap again. otherwise, this causes part of the triforce to flicker
JSR ApplyTileMap ; inserts the new tilemap into the vram
.notfirst
SEP #$30
RTL
}
; ==============================================================================
Reset1:
{
JSL $1BEDF9 ;replaces the bit that was replaced Palette_ArmorAndGloves
LDA.b #$1F : STA $1C ;re-enables BG3
LDA.b #$1F : STA $1D
LDA.b #$1F : STA $212C
LDA.b #$1F : STA $212D
LDX #$22 : STX $210B ;resets tile address
RTL
}
; ==============================================================================
Reset2:
{
JSL $00E19B ;replaces the InitTileSets that was replaced
LDA.b #$1F : STA $1C ;re-enables BG3
LDA.b #$1F : STA $1D
LDA.b #$1F : STA $212C
LDA.b #$1F : STA $212D
LDX #$22 : STX $210B ;resets tile address
RTL
}
; ==============================================================================
ApplyNewColors:
{
REP #$20 ; Set A in 16bit mode
; note, this uses addresses like 7EC300 and not 7EC500 because the game
; will fade the colors into 7EC500 based on the colors found in 7EC300
LDA #$1525 : STA $7EC352 ;first row
LDA #$1947 : STA $7EC354
LDA #$1DA7 : STA $7EC356
LDA #$2E2B : STA $7EC358
LDA #$4B32 : STA $7EC35A
LDA #$12A6 : STA $7EC370 ;second row
LDA #$092D : STA $7EC372
LDA #$156E : STA $7EC374
LDA #$19B1 : STA $7EC376
LDA #$2214 : STA $7EC378
LDA #$7F61 : STA $7EC37A
LDA #$7AA0 : STA $7EC37C
LDA #$031B : STA $7EC37E
LDA #$092D : STA $7EC392 ;third row
LDA #$156E : STA $7EC394
LDA #$19B1 : STA $7EC396
LDA #$2214 : STA $7EC398
SEP #$20 ;Set A in 8bit mode
RTS
}
; ==============================================================================
ApplyGraphics:
{
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2100 ;turn the screen off (required)
LDX #$80 : STX $2115 ;Set the video port register every time we write it increase by 1
LDA #$5C00 : STA $2116 ; Destination of the DMA $A000 in vram <- this need to be divided by 2
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register "001 => 2 registers write once (2 bytes: p, p+1 )"
LDA.w #YourBitmap : STA $4302 ;This is the source address where you want gfx from ROM
LDX.b #YourBitmap>>16 : STX $4304
LDA #$4600 : STA $4305 ; size of the transfer 3 sheets of $800 each
LDX #$01 : STX $420B ;Do the DMA
LDX #$0F : STX $2100 ;turn the screen back on
RTS
YourBitmap:
incbin Tileset.bin
}
; ==============================================================================
ApplyTileMap:
{
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2100 ;turn the screen off (required)
LDX #$52 : STX $210B ;52
LDX #$80 : STX $2115 ; Set the video port register every time we write it, increase by 1
LDA #$0000 : STA $2116 ; Destination of the DMA $0000 in vram <- this need to be divided by 2
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register "001 => 2 registers write once (2 bytes: p, p+1 )"
LDA.w #YourTileMap : STA $4302 ; This is the source address where you want gfx from ROM
LDX.b #YourTileMap>>16 : STX $4304
LDA #$0800 : STA $4305 ; size of the transfer 3 sheets of $800 each
LDX #$01 : STX $420B ;Do the DMA
LDX #$0F : STX $2100 ;turn the screen back on
RTS
YourTileMap:
incbin Tilemap.bin
}
; ==============================================================================
Jared_Brian_- Since : 2019-05-06
Custom Title Screen :: Comments

Wow! The result looks phenomenal!
Years ago, when I was doing my little hack/mod, I actually gave up on changing the title screen because I couldn't get it to work. Maybe I should try again with your guide
Years ago, when I was doing my little hack/mod, I actually gave up on changing the title screen because I couldn't get it to work. Maybe I should try again with your guide


» Title Screen GFX
» Title Screen Problems
» Title Skip
» All Screens (title, naming screen etc)
» Inserting a custom ending screen
» Title Screen Problems
» Title Skip
» All Screens (title, naming screen etc)
» Inserting a custom ending screen
Permissions in this forum:
You cannot reply to topics in this forum