Jump to content
IGNORED

Pinball Dreams on Atari?


pseudografx

Recommended Posts

I'd be interested if anyone could point me to the C-64 "free scrolling" trick.

It was invented in 1987 by the MeanTeam in their demo "IK+ and VSP"

 

http://www.c64.ch/demos/realdetail.php?id=3301

 

A lot of demos and a few games use it. For example old demos like "Ice Cream Castle" by Crest feature FLI bitmap scrolling using extensions of this trick in combination with FLI. (For those who don't know: FLI is a method of enhancing the normal C64 bitmap display so it is almost a true 16 color mode at 160x200 resolution)

 

A more recent example is "Irrational" by Chorus, the bitmap scrolling in the intro is done with such a trick.

 

http://www.c64.ch/demos/realdetail.php?id=4516

Link to comment
Share on other sites

you forgot about the DLIs needed for setting positions of the underlay sprites (see for example those green indicators in the top right area of the table).

1005833[/snapback]

 

 

When using the PM for the Ball(s) it doesn't make sense to use PM for underlay.

Exept, you keep the missiles off and use them with the shape registers in the dli's...

They will automatically be adjusted to the screen then.

1005836[/snapback]

Well, as I already said, you need only 2 sprites for the ball if you sacrifice the multiball feature (anyway, there couldn't be more than 2 balls made of hardware sprites - or there could be 5 of them, but all single colored).

So the remaining 2 sprites and all missiles can be used for underlaying.

Link to comment
Share on other sites

Well, as I already said, you need only 2 sprites for the ball if you sacrifice the multiball feature (anyway, there couldn't be more than 2 balls made of hardware sprites - or there could be 5 of them, but all single colored).

So the remaining 2 sprites and all missiles can be used for underlaying.

Pinball dreams doesnt have multiball. You must be confused with Pinball Illusions.. Anyway, my c64 isnt able to cope with multiball anyway ;)

Link to comment
Share on other sites

Well, as I already said, you need only 2 sprites for the ball if you sacrifice the multiball feature (anyway, there couldn't be more than 2 balls made of hardware sprites - or there could be 5 of them, but all single colored).

So the remaining 2 sprites and all missiles can be used for underlaying.

Pinball dreams doesnt have multiball. You must be confused with Pinball Illusions.. Anyway, my c64 isnt able to cope with multiball anyway ;)

1005848[/snapback]

Fine, problem solved :-). So we *DO* have 2 spare players and 4 missiles for underlaying :-)

Link to comment
Share on other sites

Another possibility could be to use the missiles in 5th player mode (COLPF3) for the ball, which would allow more independant overlay colours.

 

In any case, I would suspect most playfield lines would need a DLI due to colour change and player X position changes. The easiest way to cope with PMs for lights etc. would be to have the entire player filled with $FF data, then set the PPOSPn register to 00 or whatever onscreen position the light is required.

 

The downside to such a method though is that we then have to use a PFn colour as the table background, and COLBK for unlit lights.

Link to comment
Share on other sites

Another possibility could be to use the missiles in 5th player mode (COLPF3) for the ball, which would allow more independant overlay colours.

 

 

It wasn't very useful, because it is the same colour that is offered by the charmode.

 

In any case, I would suspect most playfield lines would need a DLI due to colour change and player X position changes.  The easiest way to cope with PMs for lights etc. would be to have the entire player filled with $FF data, then set the PPOSPn register to 00 or whatever onscreen position the light is required.

 

 

OK... left player filled with $ff and Missiles with shape settings would be the best.

But, it is never necessary to use DLI's every scanline.

 

The downside to such a method though is that we then have to use a PFn colour as the table background, and COLBK for unlit lights.

1005857[/snapback]

 

Don't think so complicated ;)

Link to comment
Share on other sites

Cycle counting exercise (PAL systems - assumes Atari with 25 text lines)

 

                               C-64     Atari
cycles/frame           19656    35568
DMA loss:
character code fetch   1000     1000
character bitmap fetch     0      8000
DLIST fetch (approx)       0          35
Sprite/PMGs (approx)     92      1280  (#1)

TOTAL DMA loss         1092     10315

NET CYCLES / frame    18564    25253

(#1) assumes C-64 has 3 sprites enabled

 

Those calcs are probably somewhat off, but the Atari should have nearly 7000 cycles/frame free above the C-64.

More cycles could be freed up by:

- turn off ANTIC DMA for PMGs outside the pinball playfield.

- use a chunky bitmap mode, or GR. 2 for the scoreboard.

Edited by Rybags
Link to comment
Share on other sites

- use a chunky bitmap mode, or GR. 2 for the scoreboard.

1005874[/snapback]

 

 

Gr.7 -> 2 scanlines one DMA read

2 blank lines

Gr.7 -> 2 scanlines one DMA read

2 blank lines

Gr.7 -> 2 scanlines one DMA read

2 blank lines

Gr.7 -> 2 scanlines one DMA read

2 blank lines

Gr.7 -> 2 scanlines one DMA read

2 blank lines

Gr.7 -> 2 scanlines one DMA read

2 blank lines

Gr.7 -> 2 scanlines one DMA read

2 blank lines

Gr.7 -> 2 scanlines one DMA read

2 blank lines

 

..... the perfect scoreboard.

Link to comment
Share on other sites

More cycles could be freed up by:

- turn off ANTIC DMA for PMGs outside the pinball playfield.

- use a chunky bitmap mode, or GR. 2 for the scoreboard.

I doubt that stuff like this is needed. If the gameplay code works fine on a C64, it will definitely have enough time on A8 too.

Link to comment
Share on other sites

It might be the case that every cycle is needed.

 

Doing DLIs will be taxing, although clever coding can save time. Stuff like using NOPs instead of WSYNC.

 

Ditch the OS VBI stuff and only do what's needed.

 

Since the game may well need 64K, ditch the OS and use custom NMI handlers.

 

Disabling PMGs where not needed could potentially save 350+ cycles per frame.

 

A GR. 7 or similar scoreboard would be good, but the small DMA saving is offset by having to render characters.

 

Maybe we could be tricky and use the PMGs overlayed to generate the venetian blinds effect?

Link to comment
Share on other sites

might be fun to show the editor we made to make the collision data :) We also have tools for other steps in the process :) (like packing the mask data, etc)

1005883[/snapback]

If there wasn't enough memory on the Atari, we could still reduce the vertical resolution of these tables by half (while maintaining the high resolution of the graphics itself), this shouldn't affect the gameplay too much.

Link to comment
Share on other sites

A GR. 7 or similar scoreboard would be good, but the small DMA saving is offset by having to render characters. 

 

 

At first, we save cpu cycles... The handling of the scoreboard can be done, when the Ball is on the lane, when the cpu usage is low.

 

Maybe we could be tricky and use the PMGs overlayed to generate the venetian blinds effect?

1005885[/snapback]

 

?

Link to comment
Share on other sites

The graphics would suffer enormously if resolution was decreased. I feel the memory saved wouldn't be worth the sacrifice.

 

The Atari only suffers 2 memory penalties vs the C-64:

- PMGs require 1280 bytes + original copy of sprites, vs 63 bytes per sprite on the C-64

- the Atari can't touch the 2K RAM under the hardware register address region

 

** venetian blind effect = equivalent to putting GR. 7, 2 blank, GR. 7, 2 blank etc...

Edited by Rybags
Link to comment
Share on other sites

just in case someone wants to start.... ;)

 

here is the Mini-Bios:

 

switch_off_os_rom sei;stop interrups 
mva #0 ^4e;stop all interrupts 
mva #$fe ^31 
mwa #nmi $fffa 
mwa #nmi $fffe 
mva #$c0 ^4e 
rts
; NMI routine
; ^4f==#$5f if VBLKI
; ^4f==#$9f if DLI
nmi bit ^4f
bpl sys_vbl
; DLI routine, e.g.
; pha 
jmp (dliv)
; pla
; rti

; VBL routine, e.g.
sys_vbl
pha
txa:pha
tya:pha
dec 20 
lda $d300;prepare joystick 
and #$0f 
sta stick0 
jsr vbl
pla:tay
pla:tax
pla rti

Link to comment
Share on other sites

The graphics would suffer enormously if resolution was decreased.  I feel the memory saved wouldn't be worth the sacrifice.

 

The Atari only suffers 2 memory penalties vs the C-64:

- PMGs require 1280 bytes + original copy of sprites, vs 63 bytes per sprite on the C-64

- the Atari can't touch the 2K RAM under the hardware register address region

 

** venetian blind effect = equivalent to putting GR. 7, 2 blank, GR. 7, 2 blank etc...

1005894[/snapback]

 

 

Welll... leaving the missiles off, and the PMG is only using 1024K . When using PM DMA only in the Table range, you can use the rest of the memory for sprite backup or else.

Link to comment
Share on other sites

The graphics would suffer enormously if resolution was decreased.  I feel the memory saved wouldn't be worth the sacrifice.

 

The Atari only suffers 2 memory penalties vs the C-64:

- PMGs require 1280 bytes + original copy of sprites, vs 63 bytes per sprite on the C-64

- the Atari can't touch the 2K RAM under the hardware register address region

 

** venetian blind effect = equivalent to putting GR. 7, 2 blank, GR. 7, 2 blank etc...

1005894[/snapback]

I didn't talk about reducing graphics resolution, just the resolution for the collision mask and priority mask.

Link to comment
Share on other sites

Great work, PG. Now if someone could code it...

 

emkay: i prefer making music from a scratch (and with bass, otherwise a kitten dies ;) )

 

1005703[/snapback]

 

OK....

 

Please tell me what you name "real bass".... programmed on pokey with 50Hz...

 

Here is the shortened tune, with the main part...

It sounds nearly perfect when it comes to the originality of the AMIGA mod... due to the used sounds.

1005766[/snapback]

 

Simply, take the "sidsynth" instrument from RMT's instrument-library, make it play on 15kHz (by adding $01 to $d208 value), and you can have the one like this one attached below (bass or lead - as you wish). Note this is done using MPT, in RMT it may sound much better (or at least similarly). :)

YIEINTRO.zip

Edited by miker
Link to comment
Share on other sites

Simply, take the "sidsynth" instrument from RMT's instrument-library, make it play on 15kHz (by adding $01 to $d208 value), and you can have the one like this one attached below (bass or lead - as you wish). Note this is done using MPT, in RMT it may sound much better (or at least similarly). :)

1005929[/snapback]

 

 

Hm... remove the unwanted dropouts and bring in some bass and we are in business ;)

 

In RMT it cannot sound better, because the emulations sounds different from the real thing.

Link to comment
Share on other sites

This is another version of the table, with no sprites at all, except for the ball and locked ball (so this is what the game could actually look like). All the colors use simple DLIs, and not too many of them. There are 12 colours (+3 for the ball) in this screenshot, but there may be some headroom for more. I also made the texts easier to read.

post-6830-1138127137_thumb.png

Edited by pseudografx
  • Like 1
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.

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