- AtariAge Forums
- → Viewing Profile: peteym5
peteym5
Member Since 11 Jul 2007OFFLINE Last Active Feb 1 2012 3:00 PM
Community Stats
- Group Members
- Active Posts 713 (0.43 per day)
- Profile Views 4,678
- Member Title Dragonstomper
- Age Age Unknown
- Birthday Birthday Unknown
-
Gender
Male
-
Location
Western New York USA
Contact Information
10
Good
User Tools
Friends
peteym5 hasn't added any friends yet.
Latest Visitors
Posts I've Made
In Topic: Interfacing C= SID chip with an Atari...
Mon Jan 30, 2012 6:05 PM
Why not make something similar to a dual POKEY board, but instead place one POKEY + one SID and have 7 voices instead of 3 or 4. I think a big limitation of either chip is the number of voices. Address the SID at $d280 above the POKEY. Maybe put 2 POKEYS + 2 SIDS on a board or cartridge. Didn't someone have a DUAL POKEY + a 3rd chip PCM sounds?
In Topic: RMT Music Problem, need help
Fri Sep 9, 2011 10:59 AM
Thanks guys, The jsr RASTERMUSICTRACKER+9 ; stop (I call JSR rmt_silence directly), but that did not stop the song from playing over and over for some reason.
I found in the RMT_Feature file that FEAT_NOSTARTINGSONGLINE equ 1 instead of equ 0. I was sent these files many times over with corrections and old version get mixed up with the current version.
I found in the RMT_Feature file that FEAT_NOSTARTINGSONGLINE equ 1 instead of equ 0. I was sent these files many times over with corrections and old version get mixed up with the current version.
In Topic: Sprite Multicolor Multiplexer Experment
Tue Aug 16, 2011 10:20 AM
I did some optimizations to speed up what you see above. One is just store the sprite number source in the table and let the DLI load and set the registers.
Some little limitations to this multiplexer are that 20 sprites can be done within the sprite image to PMBase area. To do more than 20 sprites, you will need to do something like this...
Also all the sprite image source is best to come from the same "bank" if you want to use extended ram banks or 32k+ cartridge. Can do a single LDA #banknum, STA $D301/$D5xx before the loop. Carts with 8k banks can hold 204 multicolor sprite images at 20 pixels tall. A work around is to use RAM for extended sprites. The multiplexer itself has to copied to ram since it uses all self modifying code for speed.
I manage to get around 400 bytes of sprite data copied before the scanline reaches my intended playfield area. That is 200 pixel height for the multicolor sprites. I am doing the erase at the last DLI at the bottom of the Display List. The Sort and copy routine are done immediate VBI. I also use a custom NMI vector routine. So it requires a 64k machine with the 16k (12k) under the OS activated.
PMLOOP1 TYA STA SPRITE_SOURCE1,X LDA SPRITEUSE,X ORA #1 STA SPRITEUSE,X .. .. DLI .. LDX SPRITE_SOURCE1,Y LDA SPRITE_HOZPOS,Y STA HPOSP2 STA HPOSP3 LDA SPRITE_COLOR0,X STA COLPM2 LDA SPRITE_COLOR1,X STA COLPM3 ..
Some little limitations to this multiplexer are that 20 sprites can be done within the sprite image to PMBase area. To do more than 20 sprites, you will need to do something like this...
..replace.. DEY BPL loopstart .. with .. DEY BMI loopend JMP loopstart loopendWhich now is taking up a few more clock cycles and more time to process.
Also all the sprite image source is best to come from the same "bank" if you want to use extended ram banks or 32k+ cartridge. Can do a single LDA #banknum, STA $D301/$D5xx before the loop. Carts with 8k banks can hold 204 multicolor sprite images at 20 pixels tall. A work around is to use RAM for extended sprites. The multiplexer itself has to copied to ram since it uses all self modifying code for speed.
I manage to get around 400 bytes of sprite data copied before the scanline reaches my intended playfield area. That is 200 pixel height for the multicolor sprites. I am doing the erase at the last DLI at the bottom of the Display List. The Sort and copy routine are done immediate VBI. I also use a custom NMI vector routine. So it requires a 64k machine with the 16k (12k) under the OS activated.
In Topic: Sprite Multicolor Multiplexer Experment
Sun Aug 14, 2011 9:40 AM
Heaven/TQA, on Sun Aug 14, 2011 2:17 AM, said:
Pete, the interesting is... what happens when sprite is "overlapping" a zone?
It is always overlapping zones because the sprites are 20 pixels high and there is a DLI for every antic 4 line (8 pixels tall). What I did was fill the DLI zone table with the need values with the sprite info. When the sorting is done, the use table has to all zeroed for the next frame.
LDX FIRSTZONE
PMLOOP1
LDA SPRITE_HOZPOS,Y
STA DLI_HOZSET1,X
LDA SPRITE_COLOR0,Y
STA DLI_COLORSET2,X
LDA SPRITE_COLOR1,Y
STA DLI_COLORSET3,X
LDA SPRITE_WIDTH,Y
STA DLI_WIDTHSET,X
LDA SPRITEUSE,X
ORA #2
STA SPRITEUSE,X
CPX LASTZONE
INX
BCC PMLOOP1
In Topic: Sprite Multicolor Multiplexer Experment
Sat Aug 13, 2011 10:12 PM
Heaven/TQA, on Sat Aug 13, 2011 12:16 PM, said:
and how is your multiplexor working? sprite sorting? and how do you flicker?
The Flicker cannot be helped because as you know the Atari can only has 4 players and 4 missiles. Since we are combining groups of 2 for the 3rd color, we end up with 2 in one of the DLI zones. Which sprite number we start with increments every frame and when the start number reaches the number of sprites, it resets to zero. Within the sort loop, I increment the sprite number by 3 and decrement by 10 if greater that 10. So all the sprites get checked in an order like 0,3,6,9,2,5,8,1,4,7,0. Since we started with 0, it knows what value to end the loop at. It looks at the vertical position to determine which zone to put the sprite so the DLI routines know where to set the hoz position, color, and width. I use a 256 byte long table to quickly figure out which zone the sprite will start and end in. Since I have a DLI on every line, the table goes something like 1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,etc. for areas out of the playfield, it is filled with a value greater than 128 so the negative flag is trigger and tells it to skip the sprite. When the sprite is used a flag is set so the next sprite will be set for player 2&3. If more than 2 sprites are on the line, the rest are not drawn for current frame.
LDA SPRITENVERTPOS,Y
BEQ SKIPSPRITE
TAY
LDX DLI_TABZONE,Y
BMI SKIPSPRITE
STX FIRSTZONE
ADC #21
TAY
LDX DLI_TABZONE,Y
BMI SKIPSPRITE
STX LASTZONE
LDA SPRITEUSE,X
LDX FIRSTZONE
ORA SPRITEUSE,X
CHECK_SPRITE_1
LSR
BCS CHECK_SPRITE_2
..
LDA SPRITEUSE,X
ORA #1
..
CHECK_SPRITE_2
LSR
BCS SKIPSPRITE
..
LDA SPRITEUSE,X
ORA #2
STA SPRITEUSE,X
DEX
CPX FIRSTZONE....
..
I know people have other ways to indicated with sprites are in use and I am continuing to experiment with this thing.
You have to keep in mind I am showing the multiplexer at its max, all 10 sprites active. What I have in mind is only 4 or 5 monsters per room. Maybe have some monster types patrol its own quadrant of the screen.
- AtariAge Forums
- → Viewing Profile: peteym5
- Guidelines




Send me a message
Find content
Display name history
