Jump to content

bB:New Tool for creating PF + 48 px title screens (functional WIP)


Recommended Posts


I found out that some homebrewers are using playerpal 2600 to do 48-pixel sprites (like for a title screen) and - fancying myself the provider of the finest browser-based graphic and sound tools for atari available, I thought I'd make a new tool for that! (with help on the kernel side from @Karl G) - it lets you edit a 48x??? (max 192) graphic and then generate an assembly kernel and a wrapper batari BASIC program to run it - you can easily insert this as a tile screen into your own game.


I'm open for suggestions for the name of it, but for now it's Title-Screen-Titan (which includes my ambition to support some Playfield Graphic variants) 

UPDATE: ITS NEW NAME IS Splash-O-Matic 2600 - https://alienbill.com/2600/splash-o-matic/

currently includes Image Import and a Text Tool!


Here is the editor and then the result running in Stella. 


It provides a button for the assembly kernel, and a batari BASIC wrapper to run it.

(I guess if you're using the ASM straight up you will have to set logo_color and logo_height yourself.)


You can see a "todo" list item of things I might try to add. I think the next most important thing might be trying to get color in there, Karl was gracious enough to assemble a kernel that can even change color on each scanline! 

Feedback/constructive criticism welcome. I like to things people find useful! Hearing 2 people use PlayerPal for this stuff was enough to get me going on this.



Screen Shot 2021-03-14 at 3.23.48 PM.png

Screen Shot 2021-03-14 at 3.23.58 PM.png



Screen Shot 2021-04-04 at 10.52.43 PM.png

Screen Shot 2021-04-04 at 10.53.10 PM.png

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

1 minute ago, chewy said:

how do you generate a .rom file? how do the .bas and .asm interact with harmony cart? do they need to be .rom files to work?

Great questions. I'm actually working on updating my old tutorial https://alienbill.com/2600/bbkickstart/ - I'm editing even as we speak.

I wasn't planning on getting into too much detail about the harmony cart, but basically that will show the steps to turning this source code into a .bin (same as a .rom). If I get feedback that explaining about harmony etc is useful I might go deep into that.

Link to comment
Share on other sites

1 minute ago, bithopper said:

Wow that's great - just when I need a tool for my splashscreen, you whip one up. Fantastic!

Awesome to hear!


Is color a big priority for you? 


Further thoughts:

Hmm, maybe "splash" or "splash screen" is a better word than "title screen" for thinking of a title for my tool page.


"Splashmatic 2600" ? 


(especially if I manage to roll-in some PlayField variants)



  • Like 1
Link to comment
Share on other sites

Scanline colors like in PlayerPal would be nice for sure. This way you can have some WYSIWYG in the editor. Would this be much work to implement?
As far as I understand 48 pixel sprites, you can also have simple color change within a scan line as this is two player sprites, alternating?

This might make editing the color in your tool a bit complex.

Link to comment
Share on other sites

Yeah. As much as I think editors that generate ready-to-run samples is a huge boon, sometimes it gets complicated, because I don't have a general purpose intra-scanline-change kernel handy and so don't know how many would be set up to switch colors when. Or like, would alternating "6 vertical color column stripes" be even worth it?? (presumably w/o the ability to change the color for each column)


I definitely have an idea for the UI for scanline colors (roughly like a flood tool but that colors lines instead of flooding to 2D regions) but I don't even know what options make sense.


But if someone pitched me a "here's a kernel, can you make me an editor mode" I might do it :-D 

Link to comment
Share on other sites

You are right of course, lets forget about the alternating color stripes - this is an effect that you can easily imagine and achieve without seeing it in the editor first.
To display (and export) one color per scanline would be an awesome feature however. I personally liked how you handled color in PlayerPal but the better is the enemy of the good :-D

Edited by bithopper
Link to comment
Share on other sites

Took at look at your exported .asm and it seems like the kernel loop has some 14 cycles free unless I miscounted (even three more at scanline start if you fill it to 76 and omit "sta WSYNC").

Just thinking loud: In 14 cycles you can read two different tables and set two color registers (even three if you use the three cycles at scanline start).
This leaves room for several possibilities e.g. you can set a color for both player sprites and set a (different) background color each scenline just in this straight forward looping kernel. That's nice!


Link to comment
Share on other sites

Yeah. Nerding out about it (so folks now bithopper submitted a patch for my venerable https://alienbill.com/2600/playerpalnext.html so I guess he's the right person to nerd on this kind of UI stuff with):


the round trip aspect is always the shakiest part of this, since a good atari programmer might well be MUCH cleverer than whatever read-stuff-back-in heuristic I come up with.

Arguably I should be more transparent about what the parser ends up expecting.

Link to comment
Share on other sites

The reasoning behind my nerdy considerations: There is enough time left in the kernel to color the sprite each scanline plus background if required. When there is any interest I am happy to send/post a demo kernel that has the colorization code filled into your brilliant 48 pixel sprite kernel.

Link to comment
Share on other sites

Well, Karl's brilliant kernel to be fair. Even in my "assembly language prime" I was never great at it (even my magnum opus JoustPong sports a brilliant kernel rewrite by Paul Slocum - he realized he could do better than my flicker-kernel by pushing one player to the right, duplicating it (well actually triplicating w/o the middle one) and using it for the left as well :-D  )


Actually I was looking over my old JoustPong kernel ( https://alienbill.com/2600/flapping/20040314.source.txt ) - I had a pretty attractive title screen using the playfield.
I had to refresh my memory how to be conservative w/ ROM space, it's kind of like there are subkernals, with similar loops for the "yellow part" and the "blue part".


that's the sort of thing I'm not sure how much I should pile into a "round trip" feature for sample code - or even optimize for in the first place. Like for purposes of sample code it's easiest just to assume you have as many lines of color data as graphical data, but it wouldn't be THAT hard to at least output the same kind of thing I did for JoustPong - each color section has its own block of kernel. 

I'm definitely out of touch w/ how people who get deeper into assembly than I am learn to do so, and so have a rougher idea of what kind of tooling makes sense for them. (I'm much more at ease w/ people like me who just joke about with batari Basic :-D )

Link to comment
Share on other sites

9 minutes ago, Karl G said:

@kisrael - did you not get my version of the kernel that included the color changes on each line? 

I did thank you! I just haven't had time to build a UI around it - I thought I'd start with monochrome (which was a little easier and also still useful) and then build up

Link to comment
Share on other sites

Ah OK, I just made the kernel run in my environment - WOOOHOOO I got a splash screen now!


The kernel loop looks like that now:


 sta WSYNC
    sty temp1                       ; 3     (3)
    lda logo_0,y                       ; 4     (7)
    sta GRP0                        ; 3     (10) 0 -> [GRP0]
    lda logo_1,y                       ; 4     (14)
    sta GRP1                        ; 3     (17) 1 -> [GRP1] ; 0 -> GRP0
    lda logo_2,y                       ; 4     (21)
    sta GRP0                        ; 3     (24*) 2 -> [GRP0] ; 1 -> GRP1
    ldx logo_4,y                       ; 4     (28) 4 -> X
    lda logo_5,y                       ; 4     (32)
    sta temp2                       ; 3     (35)
    lda logo_3,y                       ; 4     (39) 3 -> A
    ldy temp2                       ; 3     (42) 5 -> Y
    sta GRP1                        ; 3     (45) 3 -> [GRP1] ; 2 -> GRP0
    stx GRP0                        ; 3     (48) 4 -> [GRP0] ; 3 -> GRP1
    sty GRP1                        ; 3     (51) 5 -> [GRP1] ; 4 -> GRP0
    sta GRP0                        ; 3     (54) 5 -> GRP1
    ldy temp1                       ; 3     (57)
    lda logo_colors,y                ; 4     (61)
    sta COLUP0                        ; 3     (64)
    sta COLUP1                        ; 3        (67)
    SLEEP 4                            ; 4        (71)
    dey                             ; 2     (73)    
    bpl LogoLoop                    ; 3     (76)


It works nice and has some 4 cycles left. ALAS i miscounted before: This is enough to read another table but not to actually set the background color. Well I wanted it to be black anyways :cool:


I realize Karl has already provided the "color code", so it was just a nice exercise for me :grin:


Edited by bithopper
fixed typo
Link to comment
Share on other sites

It is obsolete now - but since I posted code before (not knowing that everything was already dealt with) I could not leave it like that :)  By sacrifiing another 2 cycles i managed to put the color table 'in line' with the other logo tables.
I promise this to be my last kernel post to this thread.
Thanks again, guys for the nice tool!


Link to comment
Share on other sites

40 minutes ago, Karl G said:

I don't think anyone can claim exclusive usage of o-matic

so many o-matics!














Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...