Jump to content

NorthWay

Members
  • Posts

    19
  • Joined

  • Last visited

NorthWay's Achievements

Space Invader

Space Invader (2/9)

7

Reputation

  1. Dropzone. Some enterprising hacker might work on a hostile port.
  2. Gauntlet with POKEY for /those/ soundeffects obviously. Any good system needs Gauntlet!
  3. If you weren't cloning Gauntlet literally you could make the mobs have a "neutral/idle" position they do a pause animation loop through and then have a dynamic character assignment for when single mobs starts chasing you. That could bring the directional problem down to 1/8th but moves complexity to other parts. Since Gauntlet actually doesn't move mobs across 16x16 rectangles that are already occupied that could work really well - you could have a random function to pick one of the idling mobs to convert to active and do a wake-up and scanning animation and then go back to idling to give them a sense of being alive and waiting to get out of line.
  4. The more I think about this the more I am amazed at how elegantly they solved the mass-animation problem by simply cycling through character sets. Was that a first, or has some other game done it before? As for Atari versions, you need 2x2 characters that are looking in 8 directions, for a total of 32 characters per mob type. That leaves you with 3 different types of mobs (backgrounds etc take space) for a character set with 128 unique characters, or 7 with 256 ones. I'm pretty sure there were more than 3 in Gauntlet - not even sure that 7 is enough... (but they made it do for the 64 version somehow). I understand why it went bitmap. If it was a single-player game you could have done a character set split in the middle of the player sprite and have the upper part face downwards and the lower part face upwards to use 5/8s of the font distribution.
  5. Download from http://csdb.dk/release/?id=151272
  6. Ah, you might not know there is actually a 3rd conversion now? I haven't tried it or seen any video of it yet, only a screnshot, but word is that this is the real thing. (It is named "Donkey Kong Arcade" IIRC.)
  7. Great stuff! I see that he talked about coming back - do you think you could try to see if he would briefly touch upon a "what did we learn form the third project" thing? And if he thought that was being applied to the Lynx/3DO? Thanks.
  8. Let me tie together a few lose ends to make clear what I have in mind - I am toying with a Gauntlet like for AGA Amigas so I have looked a little at the arcade - I found a TMS5220 demo for the TI-99/4a on youtube that showed how to take a sample and process it on a pc to play back on the 99 - I read the Wikipedia page on Gauntlet that it used a professional actor as the voice of the game master So I was wondering if there was a way to extract the samples from the arcade, either in native or decompressed format, and for native format how much cpu grunt is needed to decode it to raw samples (assuming you can skip the complexities you get from a full emulator)? Could decode be done in realtime on a 68020? And if you have a direct link to any source code that would be lovely. 'Ta.
  9. I just found this thread and got curious: Does it contain a proper TMS5220© emulator? I have been trying to find a decoder for compressed TMS data (Gauntlet to be precise), but haven't been all that lucky. The MAME structure and code style has sent me on a walk through the desert, even though I know it should be there somewhere, albeit in emulation form.
  10. WordTable equ $1000 ;page aligned WordPtr equ $f0 lda >#WordTable ;init sta WordPtr+1 ;init ldy byteindex sty WordPtr lda (WordPtr),y ;y+y == 2*y iny lda (WordPtr),y ;second byte of word Or a SMC variation. But this makes more sense on a cpu that can do word accesses. The next one is more primitive ldx IndexByte lda JumpOffset,x ;4? sta JumpSMC+1 ;4? JumpSMC: jmp JumpLabel ;3 cnop 0,256 ;page align JumpLabel: jmp byte0 ;3 jmp byte1 ... jmp byte85 JumpOffset: dc .b 0*3 dc.b 1*3 dc.b 2*3 ... dc.b 85*3 byte0: ; code for index 0 starts here Which is a byte-size indexed jump in 14 cycles. For the full 0-255 range it takes 19 cycles SMC (20 using non-SMC stack). For the sorting in Tyger Tyger it is basically a massive cheat that looks a little bit like this lda Y_position lsr tax txs loop: pla bmi loop then stuff your sort index on the stack with a pha The idea is to just search for free slots on the stack where you can insert your array index and hope that things gets reasonably in order, and when you are done you can pop the stack and easily get your objects. Kind of a bucket sort? Insertion sort? Radix sort? Very much a case of "good enough". See thread that uses it here: http://www.lemon64.com/forum/viewtopic.php?t=5839 I guess you have seen Linus' loader info. For reference Linus' own page on it http://www.linusakesson.net/programming/gcr-decoding/index.php
  11. True. After all these years it wasn't until today I realized that there is a way to shortcut a "*2" byte addressing: If the base address is page aligned then you can store the byte as the low byte of the address and then index address it with ,X or ,Y. Too bad there is not much use for it on a 6502, but I was looking at the 6809 when that struck me. Then you have stuff like optimizing a 0 to (0-255)/3+1 range jumptable to jump to jumps. Then it gets more crazy like the stack-based multiplexer sort that Gary Liddon(?) used in Tyger Tyger. Then it gets rather esoteric when you look at Linus' 1541 turbo decoder. And I don't know if someone actually implemented using chained CIA timers to calculate line slope values. Anyone know? Back to topic, is it possible to morph the AND/OR into a table lookup if not using EOR? I guess that would need separate code for different Y positions already. OTOH the existing code is very fine if you spin the pointers in a loop and don't intend to execute the setup for every pixel in a line. With a page per line screenmode X changes is a simple INC/DEC, and Y changes is only recalculating the Y part again.
  12. I'm more used to wasting memory on that "other" machine, but I was just wondering if you have considered a few other approaches? Only use EOR plotting? Makes for possibly weird colours when crossing different colours. Split in 4 different cases? It looks like you have basically 4 different masks that can then be immediates. Doesn't really work unless you also special case the code in either X or Y direction jumptables. As said, special case either by line or by column so you can use known absolute indexed address modes. And you run into 6502 indexed jumping trouble again... (word handling is not a strong point for the 6502). Looking at 6502 code sometimes makes me gnash my teeth. Is it faster to use a jumptable or to use zeropage. What is the fastest jumptable you can get away with. Can you use selfmodification for something. And it leaves me with this uneasy feeling that it can be done totally differently and so much faster by doing something incredibly clever.
  13. Exiting my lurk&stealth mode I'd like to suggest a few things here. The first one I have been twisting my brain to remember and have googled in vain. I am pretty sure there was a write-up of an algorithm in old venerable BYTE magazine, probably around 1990 give or take a year, that did plot two pixels at once by using the inherent characteristic that you knew that compared to the first pixel the next pixel could only occupy one of three neighbouring positions. UPDATE: This one seems to be along the same lines https://smartech.gatech.edu/bitstream/handle/1853/3632/93-22.pdf The second one is the other version of Bresenham which you can find a reference to here http://www.phatcode.net/res/224/files/html/ch36/36-01.html
  14. I found an A1000 picture showing TMS4464-12NL chips. I don't know if I should interpret the datasheet to classify it as 120ns or 230ns (you kinda would like to read or write, not just access it?). Then I found an A500 internal expansion using km41256ap-15 which seems to be 150/260ns. (And worst case would be 4 bitplanes hires - grabbing all the cycles.)
  15. There is one very good reason why nobody has built a 6809 card for the 64 similar to the CP/M card. (Something is odd about the post layout here...) From the deep dungeons of my easily distracted memory I seem to remember something similar being done for the 68000 that solved it by playing tricks with the rise/fall of the bus signals? Are there any similar pins on the 6809 that can be abused to get a halt effect?
×
×
  • Create New...