Fröhn Posted January 24, 2006 Share Posted January 24, 2006 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 Quote Link to comment Share on other sites More sharing options...
pseudografx Posted January 24, 2006 Author Share Posted January 24, 2006 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. Quote Link to comment Share on other sites More sharing options...
WVL Posted January 24, 2006 Share Posted January 24, 2006 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 Quote Link to comment Share on other sites More sharing options...
pseudografx Posted January 24, 2006 Author Share Posted January 24, 2006 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 :-) Quote Link to comment Share on other sites More sharing options...
Rybags Posted January 24, 2006 Share Posted January 24, 2006 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. Quote Link to comment Share on other sites More sharing options...
emkay Posted January 24, 2006 Share Posted January 24, 2006 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 Quote Link to comment Share on other sites More sharing options...
Rybags Posted January 24, 2006 Share Posted January 24, 2006 I meant a DLI each text line, ie - each 8 scanlines. The 5th player option could be viable - the two tables both contain similar colours to the ball. PMGs as "underlays" might be the best option since we wouldn't really want square lights. Quote Link to comment Share on other sites More sharing options...
Rybags Posted January 24, 2006 Share Posted January 24, 2006 (edited) 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 January 24, 2006 by Rybags Quote Link to comment Share on other sites More sharing options...
emkay Posted January 24, 2006 Share Posted January 24, 2006 - 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. Quote Link to comment Share on other sites More sharing options...
Fröhn Posted January 24, 2006 Share Posted January 24, 2006 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. Quote Link to comment Share on other sites More sharing options...
WVL Posted January 24, 2006 Share Posted January 24, 2006 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) Quote Link to comment Share on other sites More sharing options...
Rybags Posted January 24, 2006 Share Posted January 24, 2006 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? Quote Link to comment Share on other sites More sharing options...
pseudografx Posted January 24, 2006 Author Share Posted January 24, 2006 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. Quote Link to comment Share on other sites More sharing options...
emkay Posted January 24, 2006 Share Posted January 24, 2006 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] ? Quote Link to comment Share on other sites More sharing options...
Rybags Posted January 24, 2006 Share Posted January 24, 2006 (edited) 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 January 24, 2006 by Rybags Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted January 24, 2006 Share Posted January 24, 2006 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 Quote Link to comment Share on other sites More sharing options...
emkay Posted January 24, 2006 Share Posted January 24, 2006 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. Quote Link to comment Share on other sites More sharing options...
Rybags Posted January 24, 2006 Share Posted January 24, 2006 3:30 in the morning here... time for zzZZZ. Quote Link to comment Share on other sites More sharing options...
pseudografx Posted January 24, 2006 Author Share Posted January 24, 2006 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. Quote Link to comment Share on other sites More sharing options...
miker Posted January 24, 2006 Share Posted January 24, 2006 (edited) 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 January 24, 2006 by miker Quote Link to comment Share on other sites More sharing options...
TMR Posted January 24, 2006 Share Posted January 24, 2006 I'm the coder of PD64 and was pointed to this by some friends [snog] i was going to, but didn't see you on IRC. =-) Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted January 24, 2006 Share Posted January 24, 2006 still one important question WHO will pickup the 800 conversion??? i definitly not... maybe emkay... hehehehe ;) he can play the producer role... Quote Link to comment Share on other sites More sharing options...
emkay Posted January 24, 2006 Share Posted January 24, 2006 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. Quote Link to comment Share on other sites More sharing options...
pseudografx Posted January 24, 2006 Author Share Posted January 24, 2006 (edited) 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. Edited January 24, 2006 by pseudografx 1 Quote Link to comment Share on other sites More sharing options...
Heaven/TQA Posted January 24, 2006 Share Posted January 24, 2006 miker... i wasnt aware of that mpt can produce sidish sounds? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.