Jump to content
RevEng

The Titlescreen Kernel

Recommended Posts

If you try to include any assembly module more than once, the assembler will complain about duplicate symbols that are defined in each. There are a super huge number of these, including the labels for each section of the image data itself. That's why there are separate modules for multiples of each image type within the titlescreen kernel itself (e.g. 48x1_1_kernel.asm, 48x1_2_kernel.asm, etc.) with the appropriate prefix in each one for the symbols used within each file so that none of them conflict with one another. With multiple titlescreen kernels, all of these would conflict without a massive effort to rename all of them in all of the modules that are used. That was part of my reason for creating the aforementioned splash screen - it's something that's a tiny subset of the titlescreen kernel's functionality, but it uses different symbols so it doesn't conflict in a project that also uses the titlescreen kernel.

Share this post


Link to post
Share on other sites

Thanks guys - yeah looking to overlay the game over messages on the existing screen as it seemed to be an easier way to do what I wanted.

 

Guess i'll try using sprites to do what I need.

 

Thanks again!

Share this post


Link to post
Share on other sites

Hello everyone,

 

I just started to use the Titlescreen Kernel (I downloaded version 1.8), and I have a problem. I follow the instructions in the manual to convert the images to code, pasted them into the right files, and tried to compile my game (using batari Basic v1.01dreveng41); I get:

Found dasm version: DASM 2.20.11 20171206
Starting build of Twitter_Life.bas
batari Basic v1.01dreveng41 (C)2005-2017
2600 Basic compilation complete.
--- Unresolved Symbol List

 free ram: 0
 DPC free RAM= 603
      49 bytes of ROM space left in bank 1
      3342 bytes of ROM space left in bank 2
      3058 bytes of ROM space left in bank 3
      3883 bytes of ROM space left in bank 4
      3883 bytes of ROM space left in bank 5
      3247 bytes of ROM space left in bank 6
      2661 bytes of ROM space left in graphics bank


Fatal assembly error: Source is not resolvable.
Build complete.

As you can see, it indicates an "unresolved symbol", but it does not show anything.

 

If I edit "titlescreen/titlescreen_layout.asm" and remove all the minikernels, except the "draw_space", then I get a clean compilation.

 

Any ideas about what could be happening? In case it is relevant, I'm using DPC+ kernel.

 

Thanks!

 

Andres.

Share this post


Link to post
Share on other sites

Without seeing your code, it's nothing more than a guess... I'm assuming you used vbb to generate the titlescreen data. When you generated the data, did you select the right "copy" number that corresponded to the minikernel copy that you pasted your data into?

 

If that's not it, maybe you can zip up your titlescreen directory and attach it here.

Share this post


Link to post
Share on other sites
On 11/13/2019 at 9:16 PM, RevEng said:

Without seeing your code, it's nothing more than a guess... I'm assuming you used vbb to generate the titlescreen data. When you generated the data, did you select the right "copy" number that corresponded to the minikernel copy that you pasted your data into?

 

If that's not it, maybe you can zip up your titlescreen directory and attach it here.

Thank you so much for your message, RevEng.

 

I used the Img2Code program that comes with vbb to generate the titlescreen data but, because I'm using Linux, that's the only component from vbb that I'm using (I prefer to use vi ;-) ).

 

Attached is the titlescreen directory, so you can take a look.

 

Again, thank you so much for this.

 

Andres.

 

titlescreen.zip

Share this post


Link to post
Share on other sites

It looks like your graphic files are too short. For example, your 96x2_1_image.asm file only has a single "bmp_96x2_1_00" block of data. There should be a lot more output from img2code, including data blocks for bmp_96x2_1_01, bmp_96x2_1_02, ... , bmp_96x2_1_11. The titlescreen kernel expects to see all of these blocks in a file, which is why compilation fails when they're missing.

 

So the question is why are they too short? Either you missed data during copy and paste, or maybe you didn't select the right mode in img2code. (e.g. "sprite", "Title kernel 96x2", "copy 1")

 

Share this post


Link to post
Share on other sites

I have seen the visible output of Img2Code get truncated when it is running through the wine emulator, but a Select All -> Copy seems to get everything. This is just from memory, though, so it may not be related to the same issue. 

  • Thanks 1

Share this post


Link to post
Share on other sites
On 11/14/2019 at 11:00 PM, RevEng said:

So the question is why are they too short? Either you missed data during copy and paste, or maybe you didn't select the right mode in img2code. (e.g. "sprite", "Title kernel 96x2", "copy 1")

 

Aha! I assumed that I downloaded the latest VbB (the one pinned in the first post of this thread), and when I saw the screenshot in the instructions (showing the different versions under "Title kernel" and "copy"), I thought the instructions were just out of date. But your comment made me think I was using the wrong VbB version, and I found build 568. That one had the right Img2Code version, and generated the right code.

 

Thanks for taking a look! 🙂

 

Andres.

  • Like 1

Share this post


Link to post
Share on other sites

Is it possible to now use the 96 wide bitmap kernel with a colored background without the bars on the left?


 

Edited by freshbrood

Share this post


Link to post
Share on other sites

I playee with this a bit. Can I make a 96p wide multi color full screen image? It seems the larger multicolored images are only 48p but only the ROBOTRON text is 96p. I'm a bit cornfused on which one to use exactly. 

 

I'd just like the largest fullest screen multi colored image I could make, but also maybe with a scrolling text. 

 

 

Share this post


Link to post
Share on other sites

The included PDF describes the kernels available. The 96x2 kernel supports different colors on each line, as does the 48x2 kernel. It comes with a number of code examples, too. It's a bit of a learning curve, but quite powerful.

  • Like 2

Share this post


Link to post
Share on other sites
On 9/23/2010 at 4:45 PM, RevEng said:

The bB Titlescreen Kernel can be used to create high-quality titlescreens for your bB games. Enjoy!

 

titlescreen_kernel_1.8.zip 1.56 MB · 497 downloads

 

Jeff Wierer's most excellent vbb project now has an integrated Titlescreen Wizard!

 

Here are some screenshots from 3 of the examples in the zip.

post-23476-128527425178_thumb.png post-23476-12852742643_thumb.png post-23476-128537761208_thumb.gif

 

And here are the bins from the examples.

ex1-basic_color.bas.bin 16 kB · 977 downloads

ex2-scroller.bas.bin 16 kB · 886 downloads

ex3-animation.bas.bin 16 kB · 841 downloads

ex4-color_by_flicker.bas.bin 16 kB · 907 downloads

ex5-player_and_playfield.bas.bin 16 kB · 650 downloads

 

Please report any bugs in this thread. Go forth and make titlescreens!

For the scroller example is it possible to have different colors in the 2084? I'm able to do it with the Robotron. These colors are horizontal. If this possible it would help the game I'm about 80 percent complete with, thanks.

Share this post


Link to post
Share on other sites
4 minutes ago, Lewis2907 said:

For the scroller example is it possible to have different colors in the 2084? I'm able to do it with the Robotron. These colors are horizontal. If this possible it would help the game I'm about 80 percent complete with, thanks.

Yes. This part uses the 48x1_1 kernel, which has this comment at the top:

 

 ; *** if you want to modify the bitmap color on the fly, just dim a
 ; *** variable in bB called "bmp_48x1_1_color", and use it to set the
 ; *** color.

 

So, you can dim any of your variables with this name for this purpose. You don't have to reserve it beyond the title screen; just use a variable that you don't need on the title screen, and you can overwrite it after you exit the titlescreen.  You can dim the same variable twice to give it two names, e.g.:

 

    dim bmp_48x1_1_color=a
    dim lives=a

 

Share this post


Link to post
Share on other sites

Karl G,

 

I tried it and some other variations. I'm trying to figure our how to make each ghost the correct color. It's been a learning curve with the Titlescreen. I am making some Powerpoint Notes and others stuff to help others who are probably struggling with the Titlescreen Kernel as well. Not sure if it's possible to do what I'm asking. Thanks if you can explain it better or what I should do next. 

 

 

 

 

image.thumb.png.52e780e12df64d9c640a62121b14b40f.png

Share this post


Link to post
Share on other sites

If you use the 48x2 kernel for a single image for all 4 ghosts, then you can define the color on a line by line basis, and have each ghost a different color. If you are wanting to use the 48x1 kernel for the higher resolution, then you will need 4 separate instances of the kernel (one for each ghost), and set 4 different variables to control the color of each one. So, yes, it can be done a couple of different ways depending on what you are aiming for. 

Share this post


Link to post
Share on other sites

How would I do that with the attached. Basically the line by line way seems easier from what I learned so far as I'm just using the example and changing out the picture data. I'm not sure how to do the line by line.

48x1_1_image.asm

Share this post


Link to post
Share on other sites

You can't with the 48x1 kernel - you would need to switch it with the 48x2 kernel, where the lines are twice as tall (lower vertical resolution), but it has the ability to add in the color data. Here's how the PDF explains the difference between the two kernels:

 

Quote

B.the 48x1 minikernel - this displays a 48-pixel wide bitmap image.
The "x1" part of the name means that this minikernel display pixels using a single line on your

TV; the pixels are half height, making them look like rectangles instead of squares.

This is a single color minikernel, though it's possible to set the color dynamically using a variable in your batari Basic program. You can also have a background playfield behind the image of any color.

 

C.the 48x2 minikernels - these allow you to display a 48 wide bitmap image.
The "x2" part of the name means that this minikernel display pixels using 2 lines on your TV.

This means the pixels it displays are square, more or less.

With this minikernel you set the color of each line, so it's possible to create a very colorful logo or graphic with it. You can also have a background playfield behind the image of any color.

 

  • Thanks 1

Share this post


Link to post
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.

Guest
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.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...