-
Content Count
16,912 -
Joined
-
Last visited
-
Days Won
10
Posts posted by SpiceWare
-
-
-
The loop is basically:
Scanline 1: update playfield, update player
Scanline 2: update player, calculate values for playfield - but save results for next scanline
- Using Stella you can see the overspill doesn't occur on the very first frame. Load the ROM
- hit ` to enter debugger
- click in the prompt box to give it focus
- type reset
- type frame
- type frame
-
type savesnap
- type frame
-
type savesnap
What's happening is the values in the TIA register only change when you tell them to. If you don't want what's shown at the bottom to repeat at the top then you must change them before the top becomes visible again.
Simple fix would be in NextFrame - where you see this:lda #0 sta PFIndex ; reset playfield offsetjust add 3 more lines:
sta PFIndex ; reset playfield offset sta PF0 ; reset playfield sta PF1 ; reset playfield sta PF2 ; reset playfieldThe shearing occurs because the video output is turned on mid-scanline:
; Wait for end of VBLANK TIMER_WAIT lda #0 sta VBLANK
The way to fix that is to add a sta WSYNC so the video output is turned on at the start of the scanline:; Wait for end of VBLANK TIMER_WAIT sta WSYNC lda #0 sta VBLANK
-
1
-
1 hour ago, Yoruk said:Ok the table it looks like it works as you presented. I don't see why the total of the left column doesn't give me 196 or 196/2, but if I try to modify these values it does affect the pattern height.
192's the usual target mentioned when talking about the 2600, not 196. It comes from Atari's original in-house documentation, the Stella Programmer's Guide, where you'll find this:
Due to how TIA works, the programmer can change those - such as increase the picture to 200 scanlines while decreasing Vertical Blank to 33 and Overscan to 26. The tradeoff of doing that is you get fewer cycles of CPU time for game logic.
I checked my games once and found my screen sizes ranged from 182 to 202.
You may also find my tutorial to be useful.
-
1
-
-
No color for PAL happens when an odd number of scanlines are sent to a PAL TV, so wouldn't be the problem.
How far down the screen the score is, plus the Funvision at the bottom, implies it's the pirated PAL version.
-
Past few days have been awesome for production. Additionally it's been in the low 70s, so I was able to open up the house instead of using AC.
Next few days will be back into the 80s and rainy, so production will be down and AC will be back on to combat humidity. Will be interesting to see if I manage to finally overproduce for a month or not.
-
The colors are different for NTSC, PAL, and SECAM 2600s. You can run the ROMs in Stella, use CONTROL + F to switch the display format from PAL to NTSC, and compare with the colors you see with your actual cartridge.
NTSC
PAL
PAL running on an NTSC 2600
NTSC running on a PAL 2600
-
Correct.
-
Correct, the (R) means referenced.
Symbols will be specific to your program, such as Medieval Mayhem doesn't have bombs so BOMB_DROP_RATE doesn't exist in its symbol table, but most games for the Atari include the following line in their source:include vcs.h
So their symbol files will have all the TIA and RIOT symbols defined even if they don't use them all.
One thing that can be tricky is a symbol might be indirectly referenced. Take a look at PosObject:
PosObject: ; A holds X value sec ; 2 sta WSYNC ; X holds object, 0=P0, 1=P1, 2=M0, 3=M1, 4=Ball DivideLoop sbc #15 ; 2 bcs DivideLoop ; 2 4 eor #7 ; 2 6 asl ; 2 8 asl ; 2 10 asl ; 2 12 asl ; 2 14 sta.wx HMP0,X ; 5 19 sta RESP0,X ; 4 23 <- set object position dex ; 2 25 rts ; 6 31
HMP0 and RESP0 are both referenced, but HMP1, HMM0, HMM1, HMBL, RESP1, RESM0, RESM1, and RESBL are not even though PosObject will use them (based on the value of the X register). So if you positioned all objects, but only used PosObject to do so, your symbol file would show:... HMBL 0024 HMCLR 002b (R ) HMM0 0022 HMM1 0023 HMP0 0020 (R ) HMP1 0021 ... RESBL 0014 RESM0 0012 RESM1 0013 RESP0 0010 (R ) RESP1 0011 ...
-
One thing I always do is have dasm generate a listing via the -l option. That lets you see exactly what dasm did.
I had Kaboom! Deluxe! open, so dropped your REPEAT/REPEND example in it. I assembled it using:
dasm kaboom_deluxe.asm -f3 -v0 -skaboom_deluxe.sym -lkaboom_deluxe.lst -okaboom_deluxe.bin
The listing is file kaboom_deluxe.lst which contains:
2170 fc1f REPEAT 192 ; scanlines 2171 fc1f e8 inx 2172 fc20 86 09 stx COLUBK 2173 fc22 85 02 sta WSYNC 2170 fc22 REPEND 2171 fc24 e8 inx 2172 fc25 86 09 stx COLUBK 2173 fc27 85 02 sta WSYNC 2170 fc27 REPEND ... 2171 ffda e8 inx 2172 ffdb 86 09 stx COLUBK 2173 ffdd 85 02 sta WSYNC 2174 ffdf REPEND
The columns in the listing are:- Source code line number
- ROM address in the BIN
- assembled values for the instructions, e8 is the opcode for inx, 86 for stx, 09 the address of COLUBK, etc.
- the instructions
Dasm's -s option creates a symbol file. Shows you all the symbols and their values, and whether or not they were referenced by your program. Example from Kaboom! Deluxe!:
... AUDV0 0019 (R ) AUDV1 001a backgroundColor 0086 (R ) BCD2DigitPtrs f79a BLACK 0000 (R ) Blank fb00 (R ) BLUE 0080 (R ) BOMB_DROP_RATE 0001 (R ) BOMB_GROUP_MAX 0008 (R ) ...
AUDV0 was referenced, AUDV1 was not as Kaboom! only uses audio channel 0. -
I thought the break would be a week max, turned out to be a month. The last feature request is quite nice, I should have thought of it myself - you can now start a new game of Kaboom! Deluxe! via the paddle button.
Anyway, this weekend I plan to review where I left off on the CDFJ tutorial, then start work on Part 9 - Arena.
-
1
-
-
-
Doh! Should have answered that better - questions like these are better handled in the new Club DASM. We set up a central area for dasm because it's used to develop for multiple systems.
-
6 minutes ago, JohnnyRockets said:Newbie here. I cannot find the REPEAT-REPEND command anywhere in any literature that I have.
-
2 minutes ago, JohnnyRockets said:Newbie here. I cannot find the REPEAT-REPEND command anywhere in any literature that I have.
Check the new dasm homepage, it has ready to use builds and links to the documentation.
-
1
-
-
Figured it out - instead of the variable gameState I had to use remainingBuckets, which contains the # of buckets that are shown on screen - 1-3 during an active game, and 0 if the game is inactive.
When I initially implemented this a new game started as soon as you pressed the button. Problem with that is the same button press would also start dropping the bombs - that was slightly disorienting as the buckets weren't onscreen yet, so you didn't know where your buckets were in relation to the Mad Bomber.
Final implementation starts the new game when you release the button, which was a bit more complicated to do. This results in:
- first button press/release will start a new game and show the buckets
- second button press will release the bombs
I think I'm done with this hack,(made some more revisions, see reply 94) so have included the source.Summary of changes:
- Added sunset city skyline.
- Updated Activision logo to the rainbow variant.
- Added game variations 3-8, Pitch and Catch where the other player controls the Mad Bomber. Mad Bomber moves slowest in 3, fastest in 8. Game play for variations 1 and 2 is the same as in the original Kaboom!
- Paddle position indicator for Mad Bomber player.
- Paddle button to start new game.
Skyline & Rainbow logo:
Paddle position indicator shows up behind the score:
NTSC
kaboom_deluxe_20200413_NTSC.bin
PAL
kaboom_deluxe_20200413_PAL.bin
PAL60
kaboom_deluxe_20200413_PAL60.bin
Source:
Note: source was initially uploaded with COMPILE_VERSION = PAL60. I've re-uploaded it with COMPILE_VERSION = NTSC.
-
3
-
7
-
1 hour ago, Kaboomer said:Question for SpiceWare: Is it too late to add "Restart by pressing red paddle button" feature?
I took a quick look - it appeared to be simple change, but turned out the game active/inactive wasn't implemented like I thought. This resulted in the game reseting (score to 0) every time you press the button.
Out of time for now, will look into it more later.
-
1
-
1
-
-
New build based on feedback from the live stream. The throttle routines use Game # + Level # / 2, and dropped starting speed by 1, so the max distance the Mad Bomber can move per frame is:
- Game 3 moves 1-4
- Game 4 moves 2-5
- Game 5 moves 3-6
- Game 6 moves 4-7
- Game 7 moves 5-8
- Game 8 moves 6-9
If this looks good then I'm done with the hack.
NTSC
kaboom_deluxe_20200411_NTSC.bin
PAL
kaboom_deluxe_20200411_PAL.bin
PAL60
-
1
-
3
-
6 minutes ago, Cafeman said:So what is the reason of using a melody board if it doesn't have an arm on it?
Quote-
Melody boards can be reprogrammed without having to open the cartridge. Thus, you can "recycle" your Melody-based game and get a significant 50% credit towards a new game, or, if an upgrade for the game becomes available you can get the latest version by sending the cartridge to us and paying return shipping.
- The Melody has on-board RAM and supports every known Atari 2600 bankswitching method up to 32K in size. This includes SARA-based (Superchip) games and all the unique bankswitching schemes developed by third-party 2600 game developers. This gives homebrew authors more flexibility in developing new games down the road.
-
1
-
Melody boards can be reprogrammed without having to open the cartridge. Thus, you can "recycle" your Melody-based game and get a significant 50% credit towards a new game, or, if an upgrade for the game becomes available you can get the latest version by sending the cartridge to us and paying return shipping.
-
10 hours ago, ZeroPage Homebrew said:You saw Tanya in the credits but did you spot Tanya in the film??
No, wasn't on the lookout for people I knew.
-
22 minutes ago, BIGHMW said:I just tried 3 times to download it and it will not work on my Flashback 9, hardware issue or will it just not read or work???
Flashback doesn't support DPC+, CDF, or CDFJ games. To play the demo you need to use a real Atari with a Harmony cart, Stella on your computer, or a Retron 77 that has been updated with the latest version of Stella.
-
1
-
-
On 3/28/2020 at 3:37 AM, Rastignac said:Note that these quite old apps can't run on modern iOS versions and/or on modern iDevices.
(Even if someone still has the ".ipa" somewhere, it won't install at all or it just won't run; only a very old iDevice would work; what a pity indeed)
Sorry.
Correct - I have both 2600 Magic 1.1.ipa and DragstrMagic 1.0.ipa. Haven't been able to run them in a long time.
-
11 hours ago, chewy said:OH GOD. OH GOD
Bruce Campbell?!?! Nice!
-
Missed a couple months again.
- $73 for May, was $130 last year (solar only active for half this billing cycle)
- $35 for June, was $180 last year
- $60 for July, was $235 last year
- $10 for August, was $302 last year (was out of town 10 days with AC set to 90°F)
- $53 for September, was $297 last year
- $42 for October, was $235 last year
- $18 for November, was $108 last year
- $28 for December, was $99 last year
- $12 for January, was $103 last year
- $25 for February, was $93 last year
- $1 for March, was $93 last year
$357 to date, was $1875 last yearMarch
-
Doh - Space Gams.
-
1
-

Reading byte tables - help !
in Atari 2600 Programming
Posted
As @splendidnut points out, that'd be VSYNC.
You can turn VBLANK on & off mid-scanline to hide stuff, which is how we originally implemented the two-color 48 pixel kernel that we originally developed for Stay Frosty 2's menu title:
However, it's noticeable if the display is mis-adjusted.
A clearer example of this using Frantic, display adjusted OK:
Display misadjusted: