*** EDIT: pls skip to next post ... keeping this here for now in case needed but will likely delete later.
----------------------
Thanks segaloco, I tried a few different attempts with toad's message but didn't really get too far. I've been mostly playing with the code that handles top status bar, warp text, etc. I've had very meager results that are very buggy so I thought i'd reach out to see if anyone has some insight.
Here's a summary of what I've done...
1. I created a trigger that once the player enters room #$43 (single tilemap), a flag is triggered.
2. I created a new message
Code: Select all
Secretzz:
.byte $15, $1e, $12, $10, $12 ; "LUIGI", no address or length
.byte $ff
3. I added it to the following:
Code: Select all
GameTextOffsets:
.byte TopStatusBarLine-GameText, TopStatusBarLine-GameText
.byte WorldLivesDisplay-GameText, WorldLivesDisplay-GameText
.byte TwoPlayerTimeUp-GameText, OnePlayerTimeUp-GameText
.byte TwoPlayerGameOver-GameText, OnePlayerGameOver-GameText
.byte WarpZoneWelcome-GameText, WarpZoneWelcome-GameText
.byte Secretzz-GameText ; <------------------ HERE (position $0a in this list)
4. I created the following routine to write the text. You'll notice i copied a lot of the code used to write the top bar/other code (eg GameTextLoop2 ... i just appended the "2" to the label).
Code: Select all
Checkzz:
pha ; save the accumulator (return it later)
lda $7fff ; Check trigger
cmp #$01
bne skipzz ; if not triggered, bypass routine.
ldy #$0a ; if triggered, apply $0a offset for GameTextOffsets
LdGameText2:
ldx GameTextOffsets,y ;get offset to message we want to print
ldy #$00
GameTextLoop2:
lda GameText,x ;load message data
cmp #$ff ;check for terminator
beq EndGameText2 ;branch to end text if found
sta VRAM_Buffer1+27,y ;otherwise write data to buffer
inx ;and increment increment
iny
bne GameTextLoop2 ;do this for 256 bytes if no terminator found
EndGameText2:
;lda #$00 ;put null terminator at end
skipzz:
pla
rts
5. Finally, I call this immediately in the WriteTopStatusLine section. I've tried moving this to numerous different places with no change. I thought perhaps "VRAM_Buffer1_Offset" may be playing a role but not seeing it.
Code: Select all
WriteTopStatusLine:
lda #$00
jsr WriteGameText
jsr Checkzz ; <----------------- HERE
jmp IncSubtask ;onto the next task
I'm results like this which vary depending on how I set "sta VRAM_Buffer1+15,y ". If i add 15, I get this:
Screenshot 2025-11-22 223448.png
If i change it to +10, i get:
Screenshot 2025-11-22 223618.png
------------------------------
small note: in the images, you'll notice Mario is written on the right. Please ignore - i changed this while testing other things earlier and forgot to change back.
You do not have the required permissions to view the files attached to this post.