Jump to content
IGNORED

Puzzle Bobble on A8 using PCIN character mode


Synthpopalooza

Recommended Posts

Was doing some experimenting with the PCIN character mode (Graphics 12 + 10 interlace) and I had an idea ... it might be possible to do a port of Puzzle Bobble / Bust-a-Move (as it's called in Linux World) using this mode.

 

To start off, I've done a multi-character set unoptimized render of a MAME screen capture, along with a demo ATR ...

 

post-23798-0-16409100-1348114684_thumb.png MAME capture

 

post-23798-0-23247700-1348114737_thumb.png puzzle bobble - pcin.atr

 

 

This character mode allows for 35 colors onscreen, at Antic 4 (160 pixel) resolution. This mode works like Super IRG, except you are also changing the GTIA to reflect mode 10 every vblank, combined also with a display list shift, and a COLBAK (712) shift to ensure a stable background and enable an extra color register. The flicker (hopefully) is reduced, partially because of the fact that no color register changes are made ... areas of the screen where the PF0-PF3 colors mix, will be relatively stable and flicker free ... with antiflicker dithering possible to help out.

 

This screen is best viewed on a real Atari ... emulators tend to mess up the flicker really bad unless you use frame blending. Would be curious to see what results are gotten on the real machine.

 

This is a straight bitmap style render using 8 character sets ... so, a bit of work will be needed to get the screen to display using just one or two optimized character sets. It's likely the checkerboard background might need to be altered to better match up with the colored bubbles ... also remembering, in addition to the red, green, yellow, and blue bubbles, we will need three more colors (purple, grey, and black ... colors which are doable in this mode with these color settings). Each bubble will need 4 characters in order to display. It may be that 2 character sets would be needed for the game.

 

I'm going to also eliminate the scoring display at the top to enable the bottom two character rows to display. It's better to have a row of normal non interlaced character mode at the top (Antic 2 maybe) for the scoring display, as PCIN is not really suitable for readable text,

 

There will also be some experimentation to see if I can get PMG's to display here ... it's likely that PM0 will be unusable, so we'll be limited to three players ... four, if you use the fifth player option. Plus, these will have to be the same color as some of the mode graphics, as mode 10 also uses these registers.

 

The idea is, character sprites for the bubbles, and also for the arrow pointer ... you might need several frame captures, and a delta system to move the pointer. When this is optimized down, the overhead for this mode should be about 2K for the character set (4K, should a second character set be necessary), plus the normal overhead for an Antic 4 screen (960 bytes) ... plus however much you might need for PMG's should they be necessary.

Edited by Synthpopalooza
  • Like 1
Link to comment
Share on other sites

I had a think about this type of game a few years back (IMO Puzzle Bobble 3 is the best of the lot)

 

I played a little with mixed hires and mode 10 and thought of a few ideas for other combinations, the main line of thinking being using Pal mixing, a secondarly line being dithered pixels to give more colours.

 

That's the problem - we need something like 7 unique colours to cover the bubble types, they have to be easily distinguishable by the player. It's for gameplay as much if not more than "prettyness".

 

Pal mixing means the game doesn't work well in NTSC land. Flicker tricks for perceived extra colour looks shit in Pal.

 

Although back to the mixed hires/Gtia paletted - the intent with that mode mixing wasn't to get Pal colour mixing, it was merely that way to allow defining some sort of outline on the bubbles as well as representing their colour.

 

The other thing in mind was to use a missile as the trajectory guide, since colour/mode changes are in a kernal that comes almost for free. The current bubble being shot represented by using Players.

 

The advantage of this game is that it can almost be done in Basic and still be playable. Even the arcade variants get slowdown but it doesn't deteriorate the gameplay quality very much.

Link to comment
Share on other sites

I had thought of mixing hi-res with mode 10, but as you say ... the flicker can be horrid, which is why I thought mixing with antic 4 would be better ... there are shared registers on both modes, and with no color changes per frame, at least the whole screen isn't a flicker-fest. And there's also antiflicker dithering wherever you mix the PFx/BAK colors.

 

As for shaking the screen ...maybe you could have done horizontal shaking by setting the screen for horizontal scroll and then playing with the hscrol register ... problem is it might need to shake by 2 color clocks since we're using mode 10. Half of the display is already set for horizontal scroll anyway, a necessity in PCIN because this mode suffers from the HIP bug, the mode 10 pixels are off by one color clock ... so the Antic 4 display has to be horizontal scroll with HSCROL set to 13 to get everything lined up.

 

The 7 colors won't be a problem ... the original game uses red, yellow, green, blue, purple, grey, and black ... all available with the Graphics 10 overlay.

 

Only problem I see is, how to display PM's in Mode 10 ... PM0 is going to be useless (it's set to the Graphics 10 BG color) ... are there GPRIOR settings that will enable PM1-PM3 and the fifth player to show up here?

Edited by Synthpopalooza
Link to comment
Share on other sites

The hires/10 mix I used has no flicker. It was a fixed layout, alternating mode per scanline.

IIRC I also tried a layout that wasn't a simple alternation, e.g. 1 hires, 2 GTIA, 1 hires etc.

 

Just remembered - I also tried alternating hires and the GTIA "psuedo E" mode, ie 160h paletted.

The disadvantage there is that it's not always emulated properly.

 

The thinking being that character mode is obviously best for this game - memory saving and easier to do scrolling.

 

The problem with PMs is an obvious pain - but if an alternated GTIA/hires mode is in use, they function normally every 2nd scanline. It's something that can be overcome.

Link to comment
Share on other sites

Another consideration albeit not major - the screen shakes before the bubbles drop a level. I wanted to retain that. Doing a fine shudder with GTIA modes active means the step has to be twice as big.

 

Fade the border up and down? It'd be noticeable in you peripheral vision and a lot easier to implement. You can even change the rate to convey more or less urgency

Link to comment
Share on other sites

Interesting...

 

And what about striped/checkered marbles to gain extra colors (I know, they may look a bit different to show their differences better) even without interlace? It can be done in Graphics mode 15 or 12 then? I am just curious...

 

Or some alternative: use marbles numbers/letters on them instead of different colors.

Edited by miker
Link to comment
Share on other sites

Hi.

Do you look into other versions?

From here you see that there are two more simple gfxs, the GameGear and NeoGeo Pocket Colour:

http://www.mobygames.com/game/bust-a-move/screenshots

 

 

 

Synth do you have an Editor of scanlines interlace GR.12 with GR.11 (even better GR.15 with GR.11 as with a Bitmap Mode we wouldn't have the 128chars/charset problem)?

Something I have in mind...

Edited by José Pereira
Link to comment
Share on other sites

For scanline Graphics 12+11, you can use ICE editor set to CIN 12 mode ... the limitation is, you only get 14 of the 16 hues. There are 9 graphics 11 hues available per character cell, and 5 of those will change when the character is inversed. I do actually have a character set for this game, which I designed as a test using this mode ... it's designed for Antic 5 use, and I did it as a sort of example for the ICE editor.

 

ATR is here. RUN "D:ICECIN.TUR" then load the ICE file "D:BUBBLES.ICE"

 

post-23798-0-54851100-1348244204_thumb.png

 

icecin.atr

 

For bitmap 15+11, there are a number of CIN artist programs out there or you could use Atari Interlace Studio.

 

The reason I was going to use 10+11 was, I think the display would be more stable ... I may try playing around with some of these game gear screens tho, it might look decent!

Link to comment
Share on other sites

Thanks Synth.

You can get all the game levels from the GameGear map but there's a thing that wouldn't be need on A8.

On GameGear the Bubbles overlap one or two pixels over the other Bubble byte (on A8 better to have them one next to the other in char steps).

Edited by José Pereira
Link to comment
Share on other sites

Thanks for the levels ...

 

I am thinking I will stay in char mode for this ... it may be that we use 2 char sets, one for the actual game screen, and a second for the area below the line where the aiming cannon is. A DLI character change would be simple enough. And the Game Gear captures would translate to the A8 better I think. Is there a Game Gear emulator available where I could try out the gameplay of this?

 

EDIT: Tried these in G2F, I think the game can be done in Gr. 10+12 Antic 5 mode (40x12 chars) using these sources ... it will require a bit of optimisation of the color palette in mode 10 because it's like Antic 4 ... PF2 and PF3 can't be in the same char cell, same limitation for PM2 and PM3 (registers 706 and 707) ... so it's 7 colors per char cell. Once it's all done, you should have a decent representation with (hopefully) minimum flicker.

Edited by Synthpopalooza
Link to comment
Share on other sites

I did a test render of level 1 using the Game Gear level capture, in PCIN mode:

 

post-23798-0-19684400-1348252238_thumb.png puzzle bobble level 1 test - pcin.atr

 

The key here is, render the bubbles (as much as possible) using the PF colors, that way they won't flicker as much as the rest of the screen.

 

An additional idea I had would be ... 2 character sets, everything below the limit line would be charset #2 ... also render the top line and the bottom char lines below the limit line in Antic 4, and the remainder of the playfield using Antic 5 ... this would cause the entire playing area to take up 224 scanlines and fill up the screen nicely.

 

Level 1 uses only 4 colors of bubbles, but getting the remaining colors should not be a problem, you have a 35-color palette to work from here. I may try some of the later levels next.

 

Some reorganization of the Graphics 10 palette would be necessary for Antic 5 usage ... but in this case, only 2 chars are needed for each bubble.

 

EDIT: A test for level 2

 

post-23798-0-78451700-1348254609_thumb.png puzzle bobble level 2 test - pcin.atr

 

The colors may need a bit of work, but you can see how easily it is to get virtually any color you want for your bubbles.

Edited by Synthpopalooza
  • Like 3
Link to comment
Share on other sites

Nice sound! I need to get more of the gameplay and see if there's other songs to use.

 

I was also thinking, have a status area at the top of the screen which will display the round # and score, and level clear message ... which appears in the middle of the screen in other versions. Maybe use Antic 2 for this, blue and light blue text ... I think this game can be done in turbo basic, with all the font data and levels loaded from disk on the fly, as you complete each level.

Link to comment
Share on other sites

Some progress!

 

I've managed to do ICE font files for the entire screen ... and I have a preliminary test.

 

post-23798-0-86947900-1348849342_thumb.png

Screen 1: Playing area ... D:PB1.TUR

 

post-23798-0-93347100-1348849404_thumb.png

Screen 2: The bottom area with Bub and Bob and the bubble cannon ... D:PB1A.TUR

 

puzzle bobble level 1 ice font test.atr

This ATR has the two above TurboBasic examples. Also on here are two ICE font files, D:PB1.ICE and D:PB1A.ICE, and the ICECIN.TUR font editor if you want to have a look around and play with these.

 

Changes I have made include ... The bubbles now have a 3-level shading to them, improving them from the Game Gear version. I also had to redesign the bubbles, in that in the Game Gear version, the bubbles would come within the character boundaries of other bubbles ... this is impossible in character map mode on the Atari.

 

On the lower half of the screen, I did some recoloring of Bub and Bob, making Bob a darker bluish-purple.

 

While Level one only has four color bubbles (red, green, blue, yellow), I also included examples of purple, orange, dark grey, and light grey, to show that these colors of bubbles are also possible. Also, the limit line has been recolored to a mid-grey.

 

The red, yellow, and green bubbles are done using mainly the PF base registers, and do not flicker. The orange bubble is a mixture of two PF registers, and has been dithered to reduce flicker. Overall, due to the fact that there are no color palette changes in the VBI routine apart from COLBAK, the flicker on this screen (hopefully) is minimal, and will look good on a real Atari ...

 

The colors in the ICE font files have been optimised for NTSC. If desired, you can load these into the ICECIN editor, and adjust the color registers for PAL ... just use Ctrl-C from the main menu to tweak the color settings, then re-save the ICE files.

 

The screen requires two ICE fonts (4k for both) and will require a DLI character set change after about 12 character rows to display properly, which is my next step. I have, however, been able to photoshop a simulation of how the final screen will look:

 

post-23798-0-77887400-1348849989_thumb.png

 

It is possible to have a line of text at the top, maybe a non interlaced mode, I was thinking something like Graphics 0 or 1 ... and the bottom rows could be for the game status stuff like LEVEL COMPLETE and how many minutes it took ... in the Game Gear version this happens in mid screen but that isn't possible here.

 

One glitch in PCIN mode, is the line of pixels down the left side of the screen ... this is a result of shifting Graphics 12 pixels one color clock to the right to compensate for the shifting of Graphics 10 pixels. This is unfixable, unfortunately. Possibly PM0 can be used to mask this in a vertical band, since it will be set to the background color anyway.

 

Also ... the colors will differ from screen to screen because the color palette will change between levels ... so for each set of levels we will need two different ICE font sets. The last level, 15, will likely require three ICE font sets, due to the giant "drunk" character boss which will likely require a font set of his own ... the idea I had was, either load the data in from disk as needed, or do the game on a 130XE and use banked memory to store the data, accessing it as needed.

Edited by Synthpopalooza
Link to comment
Share on other sites

The only drawback of this is ... PCIN partially relies on Graphics 10, and since Gr. 10 relies on the PM color registers for some of it's colors, this means that PM0 will be useless (it's 704 which is set to the bg color, therefore will be invisible) ...

 

Also PM's 1 through 3 will be set to the respective GR. 10 colors (in this case, sky blue, dark purple, and dark blue respectively) ... and without the proper PRIOR setting, they will show when the screen is in Antic 4 but not when it's in Graphics 10 ... that's because the background changes from PM0 (704) to COLBAK (712) everytime the screen shifts between mode 10 and mode 12. You'd need a PRIOR setting for mode 10 that would allow PM's 1 through 3 to appear ontop of PM0. Or alternatively, you could use the fifth player option ... PF3, which is dark green in this case. It's possible you could get an extra color through blending these players.

 

The problem is, you need the right prior settings for these players to show on top of the PM0 background in mode 10, or display these on top of screen characters, otherwise the players will flicker every other frame. This may be possible, I'm not really familiar with how PRIOR works in Graphics 10.

Edited by Synthpopalooza
Link to comment
Share on other sites

Finally, a complete screen in PCIN mode using a character set DLI:

 

post-23798-0-98416400-1349245162_thumb.png puzzle bobble level 1 ice font test.atr

RUN "D:PB1.TUR"

 

Both ICE fonts are loaded, and a DLI changes to the second ICE font at 10 character lines. I've reserved 16 pages below RAMTOP for both fonts, keeping in mind each ICE font needs 2k. If I use 130XE bankswitching, it may be possible to load these fonts into the banked memory (no need to lower RAMTOP except for PMG's). I've calculated that using 2 ICE fontsets for each set of levels will take up exactly 64K so this is doable.

 

Next step: Add in PMG's for the cannon pointer (using PM1 perhaps), and see if I can get a gameplay demo going. Also a PMG vertical band using P0 (704, background color) to hide that dreadful vertical HSCROL artifact line in character column 0. And some animations of Bub and Bob, for when the cannon aims and shoots.

Link to comment
Share on other sites

  • 1 year later...

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.

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