Jump to content

Tjoppen

Members
  • Posts

    230
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Tjoppen

  1. 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.
  2. 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
  3. 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
  4. The NES CPU (2A03) also lacks BCD mode, to free up space for the sound generator.
  5. Sounds like you should talk to Albert. He runs the AtariAge store if I'm not mistaken.
  6. 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.
  7. 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.
  8. Sweet, thanks. I grabbed them all and put them in a zip here: http://www.acc.umu.se/~tjoppen/files/vcs/tia_sounds.zip
  9. A while back I found a ZIP file on some blog where a fellow had recorded all sounds the TIA can produce as WAV files. I seem to have misplaced it. Does anyone else have it, or a link to said site? I spent a couple of minutes searching but came up empty.
  10. 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:
  11. 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.
  12. 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).
  13. Sliding some cardboard in there seems to have worked fine.
  14. 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.
  15. 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.
  16. 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..
  17. 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.
  18. 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).
  19. I never thought of that - I'll have to cook up an effect based on it for Revision
  20. 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.
  21. 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
  22. 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.
×
×
  • Create New...