-
Posts
230 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Everything posted by Tjoppen
-
For graphics I usually write custom converters that take BMP input. For sound there's not much AFAICT. I'm working on a keyboard-like program so musicians can play around with the TIA sounds. At the moment it records WAV and dumps ASM tables, but there's still quite a lot of work required to get them into proper tables in the code.
-
Something me and Knoeki threw together for the oldskool demo competition at Stream 2012 - placed 2nd. It uses the 1-bit ADPCM compression technique I've mentioned in the coding subforum. http://pouet.net/prod.php?which=59283 http://www.youtube.com/watch?v=tEYH1-MY9s8
-
Thanks for all the tips guys
-
Background: Our student union house is hosting a multi-game challenge of 12 3-person teams tomorrow. I've offered my Atari 2600 Jr for the event, but I'd like some input what would be decent games to choose from. At the moment I only have one joystick and one pair of paddles, but I'm trying to arrange for an extra joystick. Each round shouldn't take more than a couple of minutes - preferrably 5 minutes tops. Current ideas: Combat Medieval Mayhem
-
What's the diff? 2600 & NES processors.
Tjoppen replied to JohnnyRockets's topic in 2600 Programming For Newbies
The NES CPU (2A03) also lacks BCD mode, to free up space for the sound generator. -
Contact to produce cartridges for Atari 2600 ?
Tjoppen replied to drfloyd's topic in 2600 Programming For Newbies
Sounds like you should talk to Albert. He runs the AtariAge store if I'm not mistaken. -
Text/HUD/Icons/Compression matters?
Tjoppen replied to BladeJunker's topic in Atari 2600 Programming
I used a simple 5-bit packing scheme for the text in Stella Lives!. See http://pouet.net/prod.php?which=59121 While the text display is pretty crappy the packer might be interesting to look at. It stuffs each line of six characters into four bytes. I was considering using Huffman compression, but I had enough ROM for the simpler approach to be fine. As for what takes up most ROM space, I'd say graphics and various tables. -
What does it do if you play a paddle game with driving controllers
Tjoppen replied to PitfallHarry2600's topic in Atari 2600
It won't work. The paddles are analog, the driving controller is digital (2-bit gray coded signal). There's not much else to say really. -
I've lost my ZIP file with all TIA sounds - does anyone have it?
Tjoppen replied to Tjoppen's topic in Atari 2600
Sweet, thanks. I grabbed them all and put them in a zip here: http://www.acc.umu.se/~tjoppen/files/vcs/tia_sounds.zip -
I went to Revision this year, where I met JAC, SvOlli and aegis (of trilobit). Hence this thread. I entered and won the oldskool 4k intro compo with my entry "Stella Lives!". Pouet: http://pouet.net/prod.php?which=59121 YouTube (MESS capture): http://www.youtube.com/watch?v=P7kdT_wWdFQ Live capture by m0d: http://www.youtube.com/watch?v=ZmjwkpNyB88 I also entered a two-hour party prod in the game compo, namely a pong clone with the ability to shoot missiles. It was made in two hours, hence missing features like reset or round ending. It also features the very mature name "Skjutpung". It placed last Pouet: http://pouet.net/prod.php?which=59087 YouTube: I also tried to enter with an oldskool graphics entry, but that was disqualified for being a converted photo, not a drawing. Pouet: http://pouet.net/prod.php?which=59184 Screenshot:
-
On PAL the palette "bounces" and swaps from even to odd high nybbles on the "eges". In other words: $20, $40, $60, $80, $A0, $C0, $D0, $B0, $90, $70, $50, $30.. Use a table if you want to retain portability.
-
Ball, Missile copy/flicker limit questions.
Tjoppen replied to BladeJunker's topic in Atari 2600 Programming
The ball works more or less like the missiles. You can't duplicate it horizontally though, so you can't do things like the RESPx trick to get even more copies of it. Vertically? You can have as many "splits" as you have lines, and then some. You can split the playfield horizontally using the SCORE bit in CTRLPF. This makes the left side of the playfield take its color from COLUP0 and the right from COLUP1. The background will still be COLUBK for both sides. The screenshots shows fairly typical behaviour, like changing COLUPF/COLUBK every now and then or using some of the graphics objects to draw extra mountains (battlezone). -
Excessive clearance could lead to SD card being eaten
Tjoppen replied to Tjoppen's topic in Harmony Cartridge
-
Today I noticed that SD cards can slip into the Harmony cartridge itself if you're not careful. I've attached a staged picture demonstrating the issue. I'm not sure how hard the card would be to get out if it does slip in - I don't feel like experimenting.. I'm not sure if mine is the only one with this potential issue, but I thought I'd bring it up along with some suggestions on how to remedy it: During manufacturing: * Use a Dremel-like tool when making the cut-out, making sure to only take off as much/deeply as needed for the connectors to poke through * Apply hot glue or some kind of resin to shrink the opening if it's too big, preferably in a way that doesn't leave the cartridge permanently sealed (repairs, mods) On the user side: * Insert and glue a sufficiently thick piece of cardboard in place (* Hot glue - be very careful due to risk of heat damage and connectors being covered) * Always be careful This is the only real issue I've discovered so far, apart from the FTDI chip's driver sometimes refusing to re-mount when the USB cable is inserted, which is probably unrelated to the Harmony itself. This is fixable by running "stty -F /dev/ttyUSB0 115200" for any search engines coming by here.
-
Some kind of demake is definately possible, probably involving greatly simplified physics (rigid body would probably be too costly). I would call it Irate Fowl.
- 28 replies
-
- Angry Birds
- Atari 2600
-
(and 1 more)
Tagged with:
-
Unlikely since this would require extra chip-enable logic compared to just outputing whatever is in ROM at that position. Ah, that's rather clever. You're right, the last bank should have $4C too - I simply reasoned that it might not be required, but your argument is compelling. Works fine on the Harmony though. I'm actually seeing some kind of strange problem with the F4 ROM I'm fiddling with atm. It's probably just a "normal" bug unrelated to the bankswitching code, but you never know..
-
Show some demos
-
Question: Digitized Sound on Atari 2600
Tjoppen replied to chjmartin2's topic in Atari 2600 Programming
chjmartin2: I had a ROM that decodes the 1-bit samples and outputs as 5-bit PCM. Unfortunately I seem to have misplaced both the code and ROM, but the output sounded very close to the .wav output. -
Note that some demos like Tricade seem to rely on Stella booting in a specific bank and Harmony in the other (hence the two ROMs, AFAICT). In other words, you might want to disable such randomness for certain specific ROMs. If I were you I'd spider the VCS prods on pouet to automatically add all their MD5s to an exemption list (the F8 ones at least).
-
I never thought of that - I'll have to cook up an effect based on it for Revision
-
Very early WIP of something I've been working on for ages...
Tjoppen replied to eshu's topic in Atari 2600 Programming
Impressive -
You seem to imply that BRK would happen randomly? Since it's under software control you can just do you BRK-reliant stuff in one of the other banks since. Their BRK vector is free, as you pointed out. Speaking of BRK, why to peoeple use it? Is it to save ROM, since It's slower but smaller than JSR? Yep, it's probably time to switch to that other, better assembler I read about on here.
-
I fiddled around with F4 (32k) bankswitching today and figured out how to boot everything without wasting space for stubs in every bank that jumps to Start in the appropriate bank. The idea is very simple: put Start in bank 7 and point the initialization vector to $1FFB in all others. At $1FFB you put $4C = JMP Abs which causes the cart to switch to bank 7, read the address at $1FFC-$1FFD (Start) and finallly jump to the initialization stuff just as it would happen if the machine booted in bank 7. The good thing with this is that it doesn't waste any space - it even uses space that would otherwise be wasted ($1FF4-$1FFB)! Just 18 bytes of overhead per bank - even less if you don't need JMPBank in some of them (saves six bytes). This approach can be adapted for F6 and F8 as well. The code (feel free to use): processor 6502 include vcs.h include macro.h ;FPS = 50 or 60 ;PAL = 0 or 1 #if FPS==50 ;PAL VBLNK equ 48 LINES equ 228 OVERSCN equ 36 #else ;NTSC VBLNK equ 40 LINES equ 192 OVERSCN equ 30 #endif VBLNK64 equ VBLNK*19/16-1 ;value to set TIM64 to for VBLNK OVERS64 equ OVERSCN*19/16 ;ditto for overscan JMPBank equ $1FEE ;18 byte bootstrap macro ;Includes JMPBank routine and JMP to Start in Bank 7 MAC END_SEGMENT .BANK SET {1} echo "Bank",.BANK,":", (JMPBank - *), "free" org JMPBank + (.BANK * 4096) rorg JMPBank ;Jump to fnptr in bank X ;Example usage: ; SET_POINTER fnptr Address ; ldx #Bank ; jmp JMPBank ; ;$1FEE-$1FF3 nop $1FF4,X ;3 B jmp (fnptr) ;3 B ;$1FF4-$1FFB .byte 0,0,0,0 .byte 0,0,0,$4C ;JMP Start (reading the instruction jumps to bank 7, where Start's address is) ;$1FFC-1FFF .word $1FFB .word $1FFB ;Bank .BANK+1 org $1000 + ((.BANK + 1) * 4096) rorg $1000 ENDM ;RAM SEG.U VARS org $80 fnptr ds 2 echo "RAM:", ($100 - *), "bytes left" ;ROM SEG CODE ;Bank 0 org $1000 rorg $1000 Dummy .byte $FF ;Dummy byte else DASM fails to assemble this correctly. ;You can remove this when you have anything in Bank 0 at $1000 END_SEGMENT 0 END_SEGMENT 1 END_SEGMENT 2 END_SEGMENT 3 END_SEGMENT 4 END_SEGMENT 5 END_SEGMENT 6 Start CLEAN_START MainLoop VERTICAL_SYNC lda #VBLNK64 sta TIM64T WaitForVblankEnd lda INTIM bmi WaitForVblankEnd_Overflow bne WaitForVblankEnd WaitForVblankEnd_Overflow lda #0 sta VBLANK ;NOTE: Don't set COLUBK before VBLANK has been turned off (above) ; Otherwise you get ugly colors for the first few lines ldx #LINES Kernel sta WSYNC stx COLUBK dex bne Kernel lda #OVERS64 sta TIM64T lda #2 sta VBLANK WaitForOverscanEnd lda INTIM bmi WaitForOverscanEnd_Overflow bne WaitForOverscanEnd WaitForOverscanEnd_Overflow jmp MainLoop echo "Bank",7,":", (JMPBank - *), "free" org JMPBank + $7000 rorg JMPBank ;JMPBank ;Jump to fnptr in bank X ;$1FEE-$1FF3 nop $1FF4,X ;3 B jmp (fnptr) ;3 B ;$1FF4-$1FFB .byte 0,0,0,0 .byte 0,0,0,0 ;$1FFC-1FFF .word Start .word Start
-
Ball, Missile copy/flicker limit questions.
Tjoppen replied to BladeJunker's topic in Atari 2600 Programming
You're thinking too much - just experiment. But yeah, 18 columns is the maximum since you can't poke the TIA faster than that - ceil(160 / 9) = 18. You also only have three pixel precision due to the 6502 being slower than the TIA, so you can't position your writes perfectly.