-
Content Count
222 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by Tjoppen
-
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
Sliding some cardboard in there seems to have worked fine. -
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.
-
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. -
New Atari 2600 Mappers and Hardware Document
Tjoppen replied to kevtris's topic in Atari 2600 Programming
Do the F8, F6 and F4 mappers have any reset circuitry? In other words, do they start on a random bank or is there a RC thing on /RST to ensure the latch is inited to the zeroth bank? For Minutes and a Bit I assumed F8 starts on a random bank and put a jump to the bank 0 in bank 1's Start. I've seen demos assume otherwise (probably due to testing on a Harmony). -
Ball, Missile copy/flicker limit questions.
Tjoppen replied to BladeJunker's topic in Atari 2600 Programming
I can't forget it until I've learned about it. I wasn't aware of this particular illegal opcode until now, but I'll definitely keep it in mind in the future. I've never been a huge fan of getting a third color by ANDing two together, just because I prefer being able to have the freedom to pick any color. But if you pick two colors "wisely," I guess the ANDed color could be pretty useful. I'll have to experiment with this. .. or you can let your quantization algorithm choose like I do. The simplest and most useful case is probably doing grayscale-ish things by having A = %xxxx0100, X = %xxxx1010, Y = xxxx1110 -> A&X = %xxxx0000 ==> four brightness levels. -
Ball, Missile copy/flicker limit questions.
Tjoppen replied to BladeJunker's topic in Atari 2600 Programming
Here's a sneak peek of what this thread inspired me to cobble together: -
Ball, Missile copy/flicker limit questions.
Tjoppen replied to BladeJunker's topic in Atari 2600 Programming
Don't forget SAX -> 4th color. -
What are the actual carrier frequencies and color encoding standards used on the various consoles? A couple of days ago I spent quite a bit of time figuring out how to hook the VCS up to a modern-ish TV with a digital tuner. In the end I figured out that the PAL console uses a carrier frequency of 61.25 MHz. What do the NTSC and SECAM consoles use? I ask in the hope that someone else that searches the internet will come across this thread and be enlightened.
-
suggestion for next tutorial thread
Tjoppen replied to Syntaxerror999's topic in 2600 Programming For Newbies
Thirded. -
I've been using Paul Slocum's player so far, but it doesn't do envelopes except for that emphasis bit. Hence I'm considering something like defining a set of eight "instruments", where each one has an explicit envelope and AUDC value(s?). I'd add some kind of priority/arpeggio system to this. Finally, being able to layer and loop various patterns would be good for ROM compactness.
-
Add -m32 to CFLAGS and possibly LDFLAGS IIRC. The DASM source is a mess. It violates C99 among other things, hence issues like these.
