Jump to content
  • entries
    62
  • comments
    464
  • views
    85,013

About this blog

Hardware, software, and other tricks

Entries in this blog

 

Juno First kernel demo

Based on some discussions in "The project after the project..." I decided to test out whether a ball-based kernel would work for a Juno-First style background. My conclusion: it works and is doable with a reasonable cycle load and in a reasonable amount of code on a banked cart, and horizontal motion looks great. Vertical motion is not so great, unfortunately. The pixels seem to be horizontally "jumpy" and I don't see any good remedy for that which would still have the dots move vertically.

Guest

Guest

 

It's here! 4A50 for Z26!

I've finally figured out how to get Z26 to compile, and implemented my own set of banking routines for 4A50 support. This version may be used to run the Ruby Runner WIP binaries I've posted in earlier entries. It is based on the Z26v213.tar distribution; the source code for all modified files is included.

supercat

supercat

 

Introduction to processor hardware

In a classic microprocessor system (things like Pentiums and such get more complicated) the processor communicates with memory and I/O devices using a group of wires called the address bus, another group called the data bus, and a few individual wires which may be called control signals. In the case of the 6502, the primary control signals are called phi2 and R/W.   To read an address, the 6502 drives the address bus with the address it wants to read (e.g. if it wants to read address 1 0010 00

supercat

supercat

 

I hope I'm 100% wrong about Obama

Really, I do. Because if I'm not 100% wrong about him, one of the world's largest nuclear arsenals will within a few years be in the hands of a third-world nation.   I'll readily admit that McCain was a pretty feeble candidate, but at least he would have let the country tread water until someone better came along in 2012. I believe Obama hates this country and will waste little time running it into the ground.   As I said, I hope I'm wrong.

supercat

supercat

 

HMOVE magic

The Atari 2600's HMOVE circuitry is, to put it mildly, interesting. I was just examining the schematics for it earlier today and figured out a trick that might be useful for some applications, most notably kernels in the style of Homestar Runner or Ruby Runner which move some sprites left and right by eight pixels on alternate scan lines.   The "classic" approach, invented by David Crane almost 30 years ago, was to only move sprites by seven pixels instead of eight and then shift the data byt

supercat

supercat

 

Hit the bricks!

This is an extension of my brick-buster kernel demo, with some collision-detection code added. As you move your player left and right, the program will highlight the bricks you're over on rows 1, 3, and 5. The collision-detect code is presently a bit too slow to be practical (though it does manage to run three times in vblank, which would be barely enough to allow for three balls bouncing, the timing is really very tight). The technique is nonetheless interesting and may be useful elsewhere.E

Guest

Guest

 

GADGETT

Although I'm more interested in 2600 development than 7800 development, I've had an idea for a POKEY alternative for 7800 developers. My intention would be to release an open-source framework that other developers could build upon if desired.   The GADGETT (Great Audio Doesn't Get Easier Than This) would be an 8-pin DIP Cypress microcontroller which would be programmed with a small bootloader and would attach to a few pins on the 7800 bus. The part in question costs $2.50 in quantity 100 and

supercat

supercat

 

Fun with logos

Here's an AtariAge logo done up for the 2600 with NO FLICKER. Can anyone explain how this one works? Venetian blinds, obviously, but what else?

supercat

supercat

 

Four Fast Paddles

Reading a paddle on the 2600 is a pain. Reading all four paddles on the 2600 is an even bigger pain. I think I've come up with an approach that will mitigate things somewhat. This technique requires knowing the magic index value for the current scan line; these values go "0 1 0 2 0 1 0 3 0 1 0 2 0 1 0 4" etc. corresponding to what bit in a gray code should be flipped. If the magic index value for a scan line is known, reading all four paddles takes 26 cycles; if it's not known, it takes 32 c

Guest

Guest

 

Enhanced paddle concept

Atari paddles jitter. This is a consequence of a design which makes the wiper resistance part of the measurement. There's another way to read a potentiometer which works better: put a fixed voltage on the pot and measure the voltage at the wiper. Although severe grunge can still cause slight jitter, it will generally be on the order of 2-3 degrees--far less than in the normal design.In addition to the jitter problem, Atari paddles are time-consuming to read. Because measurements take many mi

Guest

Guest

 

EconoBanking

Introducing 0840 EconoBanking   I've just built a cart using a new low-cost 8K banking scheme. Unlike other 8K designs which either require a programmable logic device or multiple logic chips, this design uses one 16-pin DIP, a 2.2K resistor, and a 100pF cap (and an EPROM of course). The one limitation is that code must be written to use the new banking method--it's not F8-compatible. Writing games to be easily-adaptable to both formats, however, should not be difficult. Any address $0800-

supercat

supercat

 

Dawn Elizabeth Payson--May 16, 1971 - Mar 29, 1999

She was a good sweetie. I don't know why I first mentioned early in our relationship (1998) that I still enjoyed playing the 2600, but Dawn quickly fell in love with Millipede. She'd had a 2600 as a youth (four-switch version) but never got any cartridge newer than Burgertime. Seven years.

supercat

supercat

 

Cost sharing

Imagine that a restaurant were to announce to 100 diners--all strangers--that they would be splitting the tab. If a diner wanted to buy a $50 glass of wine, it would only cost him $0.50; on the other hand, it would also cost the other 99 diners $0.50. If the diner decided instead to have a $2 soda or a $5 glass of wine, he (and everyone else) would pay $0.02 or $0.05, respectively. What would people under such circumstances end up ordering, and what would they pay for it?   Many people woul

supercat

supercat

 

Cory Maye off death row, at least for now

Cory Maye, a man who was on death row for having shot an intruder who happened to be a police officer, has bee moved off death row. I've read some of the trial and hearing transcripts of the case, and it sure seems like some prosecutors are more concerned in convictions than in justice.   At trial, Cory Maye testified that he was awakened by the sound of someone bashing at his door, went to the bedroom, got a pistol, and got down on the floor watching the doorway. When door was breached, Cor

supercat

supercat

 

Color scrolling RPG (2600/SuperCharger!)

Here's a demo of an even better RPG kernel. This one shows a scrolling (control with joystick) 10x8 window into a 32x24 world. The demo requires a SuperCharger (if running Stella, ignore the checksum messages) but the plan is to do the thing in 4A50 once an emulator is available (parts of the code will be much nicer, and things like animated water will be freebies).Note that there is no restriction on tile placement; the game flickers at 30Hz, but in exchange for tolerating 30Hz flicker you ge

Guest

Guest

 

Color RPG kernel

Here's a demo of an RPG kernel which should be quite practical in a 4A50 cart or maybe even the SuperCharger. It would require self-modifying code, but not obscene amounts (256 bytes per row, so 2.25K for a nine-row display); a SuperCharger implimentation would probably be reasonable also.The kernel supports a 9x9 display of 8x16-pixel characters with eight pseudocolors at 30Hz flicker (each character can contain two real colors, and they can be blended if desired). The graphics here aren't th

Guest

Guest

 

Cheap EEPROM cart

Well, I've come up with a cheap method of adding a serial EEPROM to a cart. Albert's F8/F6/F4 board should be easily adaptable to the purpose. The EEPROM may be accessed much faster than the EEPROM in a MemCard/Atarivox--a rate of 298kbps. Indeed, it's 33% faster than even 4A50's EEPROM access which is itself quite impressive for a 6502.   Code to access the EEPROM must be stored in a pair of adjacent banks; 0 and 1 are recommended, but 2 and 3, 4 and 5, or 6 and 7 could be used if desired.

supercat

supercat

 

Ch-ch-ch-ch-changes (what the 2600 can/can't do)

IntroductionOne of the first steps in creating a game is often designing a screen layout. On some systems this is fairly straightforward. On something like the Channel F, the screen has a certain resolution (e.g. 128x64) and a certain number of colors; any screen layout with the proper resolution and number of colors is feasible.The 2600, however, is another story. Although it's possible to look at some proposed screen layouts and say "Yeah, that would be easy" or to look at others and say "N

Guest

Guest

 

BTP2 with a tune!

BTP2 music sounds even better than expected when I put in some real music. I need to put in some real logic for music handling so I can sustain notes (and not use 16 bytes per beat!) but this clip shows the full five octave range of BTP2 with a recognizable tune.

supercat

supercat

 

BTP2 teaser

My next little project is called BTP2. I've got the data tables designed, but still need to come up with the code to drive them. It's somewhat related to a recent thread. So now you have to speculate what crazy idea I might be thinking of.   Clues: Stereo, 15.75KHz 46 cycles/scan line   Any guesses?

supercat

supercat

 

BTP2 Music Specs (as seen in Stella's Stocking)

In case anyone is curious about the exact specs for the music in Stella's Stocking (BTP2 music driver):   4 independent voices; two are output to each sound channel. The voices are otherwise isomorphic. Two wave tables, which are used for "loud" and "soft". Normally most voices are shaped to start soft and get loud, or start loud and get soft, or something. In the "Echo Carol" (last tune at fireplace) there's a spot where loud and soft can be heard for a solid stretch. Five octave

supercat

supercat

 

BTP2 demo

Here's a simple demo of my BTP2 music routine. The routine can produce a full chromatic scale over a five octave range, though the top and bottom octaves don't sound too wonderful (I doubt that the DPC would sound great on the really high or really low notes either).   Each of the four voices can independently play loudly or softly (though in this demo the volumes all tie together). This demo doesn't maintain vsync, though doing so probably wouldn't be too hard. The music player requires 46

supercat

supercat

 

BTP now has a display!

I just posted a new version of the BTP2 demo in the homebrew forum here. Amazing what a poor little 6507 can do. Interestingly, this demo doesn't use any undefined opcodes except for the three-cycle NOP, and it probably doesn't need even that (BIT would probably work just as well).

supercat

supercat

 

ATF750

Well, I've got the logic worked out for a "universal" PLD for the AtariAge/CPUWIZ boards using an Atmel ATF750B. The chip is pin-compatible with the 20V8/22V10 which is handy. In a lot of ways I'm not too keen about the design of the chip or the software, though.   The chip is basically positioned as a 22V10 superset. Each output pin (there are ten) has the same set of product terms as on a 22V10, but they're split into two groups. One group feeds a flipflop; the other group feeds, either

supercat

supercat

 

Archon kernel for 3F or 4A50

Here's a kernel demo which might be useful for the game Archon. For demo purposes it can run as either 3F bankswitching (use the -g11 switch in Z26) or as 4A50. A banking file is included for Cuttle Cart 2 users.

Guest

Guest

×
×
  • Create New...