-
Content Count
702 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Member Map
Forums
Blogs
Gallery
Calendar
Store
Everything posted by swapd0
-
It's easier to do it with ST games because you "only" need to convert the screen from planar to chunky format, everything it's done with the CPU. With an Amiga/genesis game you need to "emulate" or write code for the hardware scroll, hardware sprites, blitter...
-
Of course that it has less polygons than a Jaguar game because it's an Atari ST/Amiga game and both are slower machines. Get an emulator and play the game, I bet that you haven't played Stun Car Racer.
-
Thank you Jeff Minter. All hail the Yak. King of the Webs.
swapd0 replied to CyranoJ's topic in Atari Jaguar
Maybe someone can ask Jeff Minter for the source code, then it's easier to change some parts to use GPU, Blitter or OP to have a 50/60 FPS game. -
Lotus series are much better games...
-
Mac games run at 640x480 or higher resolution (no 320x200) so you have to move a lot more memory around.
-
So, I was playing around with some binaries today....
swapd0 replied to CyranoJ's topic in Atari Jaguar
IIRC most of the 'ports' don't emulate the sound part. It would be great to have a ym2149 emulator running into the DSP. -
payment sent.
-
It can be cheaper with a 3d printer? instead of using molds.
-
We need a kickstarter for a pro controller or something like that, but I don't know if it's very expensive or hard to build something like that.
-
Here you have a "small" demo that I wrote some years ago, it's just a few balls following a curve, 100% unoptimized code. You'll need a binary file with a full sine wave in 8192 steps (2 * PI), amplitude from $8000 to $7fff, because I bet that smac/rmac don't have the .sine opcode. ; First try to display a sprite (32x32 pixels ball from Atari ST demo scene) NBALLS .equ 80 PI .equ 4096 ; must be a power of 2 PI2 .equ PI >> 1 ; half pi must be a power of 2 CIRCLE_MASK .equ 2*PI-1 .68000 .org $4000 .include "Jaguar.inc" nop jsr init loop stop #$2100 ; wait for vbl jsr build_list ; swap lists move.l current_list,d0 move.l working_list,d1 move.l d1,current_list move.l d0,working_list ; read joypad move.w #$81fe,JOYSTICK move.w JOYBUTS,d0 btst #1,d0 ; press A to exit bne.s loop illegal init move.w #$2700,sr ; disable all interrups lea _BASE,a0 move.l #$070007,d0 ; big endian move.l d0,G_END-_BASE(a0) move.l d0,D_END moveq #0,d0 move.l d0,G_CTRL-_BASE(a0) ; stop gpu move.l d0,D_CTRL ; stop dsp move.l d0,G_FLAGS-_BASE(a0) ; disable GPU-IRQs ; disable DSP-IRQs move.l #%10001111100000000,$f1a100 move.l #%111111<<8,J_INT ; clear and disable IRQs move.l d0,0.w moveq #4,d0 move.l d0,4.w moveq #0,d0 move.l d0,OLP-_BASE(a0) ; set OP to STOP-OBJECT move.w d0,OBF-_BASE(a0) ; clear OP-Flag move.l d0,BORD1-_BASE(a0) ; border black move.w d0,BG-_BASE(a0) ; background black move.l d0,PIT0-_BASE(a0) ; stop PIT move.l d0,JPIT1 ; stop JPIT1 move.l d0,JPIT3 ; stop JPIT2 move.w #$1F01,INT1-_BASE(a0) ; clear pending irqs & enable vbl move.w #1,VI-_BASE(a0) lea _dummy_irq(pc),a0 move.l a0,LEVEL0.w ; video init clr.l nVbl move.w CONFIG,d0 ; Also is joystick register andi.w #VIDTYPE,d0 ; 0 = PAL, 1 = NTSC beq.s is_pal move.w #NTSC_HMID,d2 move.w #NTSC_WIDTH,d0 move.w #NTSC_VMID,d6 move.w #NTSC_HEIGHT,d4 bra.s calc_values is_pal move.w #PAL_HMID,d2 move.w #PAL_WIDTH,d0 move.w #PAL_VMID,d6 move.w #PAL_HEIGHT,d4 calc_values move.w d0,d1 asr.w #1,d1 ; Width/2 sub.w d1,d2 ; Mid - Width/2 add.w #4,d2 ; (Mid - Width/2)+4 sub.w #1,d1 ; Width/2 - 1 ori.w #$400,d1 ; (Width/2 - 1)|$400 move.w d1,HDE move.w d2,HDB1 move.w d2,HDB2 move.w d6,d5 sub.w d4,d5 add.w d4,d6 move.w d5,vbegin move.w d6,vend move.w d5,VDB move.w #$FFFF,VDE move.l #0,BORD1 ; Black border move.w #0,BG ; Init line buffer to black move.w #$6c1,VMODE ; CRY-mode (non-overscanned) move.w #$2100,sr ; enable all interrups rts _dummy_irq move.l d0,-(sp) addq.l #1,nVbl move.l current_list,d0 add.l #16,d0 ; skip first stop object & padding swap d0 ; don't forget this!!! move.l d0,OLP move.w #$101,INT1 ; clear vbl interrupt and enable it move.w #0,INT2 ; restore interrupts *** move.l (sp)+,d0 rte ; for tutorial purposes ; hard coded object list builder, now only includes a 32x32 CrY objects bGreater .equ 1 << 14 bLess .equ 2 << 14 build_list movea.l working_list,a0 movea.l a0,a1 ; save beginning of the list bsr add_stop ; first a stop object lea 8(a0),a0 ; skip one phrase (for alignment) move.w #596,d0 ; video end move.w #bLess,d1 ; condition move.l a1,d2 ; link address (first stop object) bsr add_branch move.w #36,d0 ; video start ( first visible scan line=36 ) move.w #bGreater,d1 ; condition move.l a1,d2 ; link address (first stop object) bsr.s add_branch move.w phase,d6 add.w #8,d6 and.w #CIRCLE_MASK,d6 move.w d6,phase lea sinewave,a1 moveq #0,d6 move.w #NBALLS,d7 .loop move.w phase,d3 add.w d6,d3 move.w d3,d4 add.w #PI2,d4 muls #4,d3 muls #7,d4 and.w #CIRCLE_MASK,d3 and.w #CIRCLE_MASK,d4 add.w d3,d3 add.w d4,d4 move.w (a1,d3.w),d0 ; sine move.w (a1,d4.w),d1 ; cosine muls #(360-32)/2,d0 ; screen x radio muls #(596-40-64)/2,d1 ; screen y radio (in half lines) add.l #((360-32)/2) << 15,d0 ; center x add.l #(18+(596-64)/2) << 15,d1 ; center y add.l d0,d0 add.l d1,d1 swap d0 ; x position in low word swap d1 ; y position in low word move.l #ball,d2 bsr.s add_sprite32 add.w #48,d6 ; sprite wave offset dbf d7,.loop bsr.s add_stop rts ; Add a Branch object to the list ; parameters: ; a0 = memory address to write the branch object ; d0.w = line number ; d1.w = condition (in high bits!) ; d2.l = link address ; output: ; the object is writen and a0 points to next object in the array ; d0-3 registers are smashed add_branch lsr.l #3,d2 ; address in phrases move.l d2,d3 ; save address lsr.l #8,d2 ; address >> 8 bits move.l d2,(a0)+ ; write high longword move.l d3,d2 ; get link address moveq #24,d3 ; bit positon of link field lsl.l d3,d2 ; shift into link field or.w #3,d2 ; branch type lsl.w #3,d0 ; shift y position or.w d0,d2 ; or in or.w d1,d2 ; or condition move.l d2,(a0)+ rts ; Add a Stop object to the list add_stop moveq #0,d0 move.l d0,(a0)+ moveq #4,d0 move.l d0,(a0)+ rts ; Add a Bitmap (32x32x16) object to the list ; parameters: ; a0 = memory address to write the bitmap object ; d0.w = x position ; d1.w = y position ; d2.l = bitmap data ; output: ; the object is writen and a0 points to next object in the array add_sprite32 ; first phrase movem.l d0-4/a1,-(sp) moveq #32,d4 ; sprite height move.w #39,d3 ; first line cmp.w d3,d1 bgt.s .no_clip sub.w d1,d3 ; half lines to skip asr.w #1,d3 ; lines to skip sub.w d3,d4 ; reduce height bgt.s .no_neg ; don't wanna neg numbers movem.l (sp)+,d0-4/a1 ; exit if height < 0 rts .no_neg ext.l d3 ; skip data lsl.l #6,d3 ; *64 add.l d3,d2 .no_clip lsl.l #8,d2 ; shift to position and.l #$fffff800,d2 ; remove bits lea 16(a0),a1 ; link address is two phrases ahead move.l a1,d3 lsr.l #8,d3 ; lsr.l #3,d3 ; take top 11 bits or.l d3,d2 ; or data move.l d2,(a0)+ ; write high longword move.l a1,d2 ; link address moveq #21,d3 lsl.l d3,d2 and.l #$ff000000,d2 ; low byte at high bits swap d4 lsr.l #2,d4 or.l d4,d2 ; fixed height and.w #$7ff,d1 ; remove unused bits !!!! lsl.w #3,d1 ; y position shifted 3 bits left or.w d1,d2 move.l d2,(a0)+ ; write low longword ; second phrase move.l #(1 << 15),d2 ; transparent flag move.l d2,(a0)+ ; deepth | pitch | dwidth | iwidth move.l #(4 <<12) | (1 << 15) | (8 << 18) | (8 << 28),d2 and.w #$fff,d0 ; remove unused bits !!!! or.w d0,d2 ; or x position move.l d2,(a0)+ movem.l (sp)+,d0-4/a1 rts ; Data section nVbl dc.l 0 vbegin dc.w 0 ; first scan line to draw vend dc.w 0 ; last scan line to draw phase dc.w 0 sinewave .sine $7fff, 2*PI .align .dphrase ; Bitmap size: 32 x 32 pixels. Format: 16 bits CrY ; Bitmap width: 64 bytes ball dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $7020, $7440, $7440, $7560 dc.w $7440, $7440, $7440, $7020, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $7560, $7560, $7560, $7560, $7440, $7680, $7440 dc.w $7440, $7440, $7440, $7440, $7560, $7440, $7440, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $7560 dc.w $7680, $7680, $7680, $7680, $76a0, $76a0, $7560, $7440 dc.w $7440, $7440, $7440, $7440, $7560, $7440, $7440, $7440 dc.w $7440, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $7680, $76a0 dc.w $76a0, $76c0, $76c0, $76c0, $7680, $7560, $7560, $7560 dc.w $7560, $7440, $7680, $7680, $7020, $7440, $7020, $7440 dc.w $7440, $7440, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $7680, $76a0, $76c0 dc.w $77e0, $76a0, $76a0, $76a0, $76c0, $7680, $7680, $7560 dc.w $7560, $7680, $7440, $7020, $7440, $7020, $7440, $7020 dc.w $7440, $7560, $7440, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $7680, $76c0, $77e0, $77e0 dc.w $77e0, $76c0, $76a0, $76a0, $77e0, $76c0, $76c0, $96e0 dc.w $96e0, $76a0, $7440, $7020, $7020, $7440, $76a0, $7680 dc.w $7680, $7440, $7020, $7020, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $7560, $76a0, $77e0, $77e0, $96e0 dc.w $77e0, $77e0, $77e0, $77e0, $76a0, $7680, $7680, $76a0 dc.w $76a0, $76c0, $7440, $7020, $7440, $7680, $76a0, $7020 dc.w $7020, $7020, $7020, $7020, $7020, $0000, $0000, $0000 dc.w $0000, $0000, $7440, $7680, $76a0, $77e0, $96e0, $a5e0 dc.w $96e0, $76c0, $76a0, $76a0, $7680, $7680, $7680, $76c0 dc.w $96e0, $76c0, $7440, $7440, $76a0, $76a0, $7680, $7020 dc.w $7020, $7440, $7440, $7440, $7440, $7020, $0000, $0000 dc.w $0000, $0000, $7440, $7680, $76a0, $77e0, $77e0, $96e0 dc.w $77e0, $76c0, $76a0, $76a0, $7680, $7680, $7680, $76c0 dc.w $a5e0, $76c0, $7440, $7440, $76a0, $76a0, $7680, $7020 dc.w $7020, $7440, $7440, $7440, $7440, $7020, $0000, $0000 dc.w $0000, $7020, $7560, $7680, $76a0, $76c0, $77e0, $76c0 dc.w $77e0, $76a0, $76a0, $76a0, $7680, $76a0, $76c0, $a5e0 dc.w $96e0, $76a0, $76a0, $76a0, $76a0, $7680, $7680, $7680 dc.w $7560, $7560, $7020, $7020, $b040, $7020, $b040, $0000 dc.w $0000, $7440, $7560, $7680, $76a0, $77e0, $76a0, $76c0 dc.w $76c0, $77e0, $76c0, $76a0, $76c0, $96e0, $a5e0, $7680 dc.w $7680, $7560, $7440, $7020, $7020, $7440, $7020, $76a0 dc.w $7020, $7440, $7560, $7440, $7020, $a360, $b040, $0000 dc.w $0000, $7440, $7560, $76a0, $76c0, $7680, $76a0, $76a0 dc.w $76c0, $76c0, $76a0, $96e0, $95a0, $7680, $7560, $7560 dc.w $7560, $7440, $7440, $7020, $7440, $7020, $7440, $7680 dc.w $7440, $7020, $7560, $7560, $7560, $7020, $9480, $0000 dc.w $7020, $7680, $76a0, $76a0, $7560, $7680, $76a0, $76c0 dc.w $95a0, $76a0, $7680, $7680, $7560, $7560, $7560, $7440 dc.w $7440, $7560, $7440, $7440, $7680, $76a0, $7680, $7560 dc.w $7560, $7560, $7560, $7560, $9480, $9480, $a360, $7020 dc.w $7020, $7440, $7680, $7440, $7560, $76a0, $76c0, $a5e0 dc.w $7680, $7680, $76a0, $7560, $76a0, $7440, $7440, $7440 dc.w $7440, $7560, $7680, $76a0, $76a0, $7680, $7680, $7560 dc.w $7560, $7560, $7560, $7560, $7020, $b040, $a360, $b040 dc.w $7440, $7020, $7440, $7680, $7440, $76c0, $96e0, $7680 dc.w $7560, $76a0, $7440, $7440, $7680, $7680, $76a0, $76a0 dc.w $76a0, $76a0, $76a0, $7680, $7440, $7020, $7020, $7020 dc.w $7440, $7440, $7560, $7440, $b040, $b040, $a360, $7440 dc.w $7440, $7440, $7680, $76a0, $76c0, $96e0, $a5e0, $96e0 dc.w $96e0, $96e0, $76c0, $7680, $7020, $7440, $7560, $76a0 dc.w $76a0, $76a0, $76a0, $7560, $7560, $7560, $7020, $7020 dc.w $7440, $7560, $9480, $9480, $b040, $b040, $a360, $a360 dc.w $7560, $7680, $76a0, $7560, $7560, $76a0, $96e0, $76c0 dc.w $7680, $96e0, $76a0, $76a0, $7440, $7020, $7560, $76a0 dc.w $76a0, $76a0, $7680, $7440, $7020, $7020, $7560, $7020 dc.w $7440, $7560, $a360, $b040, $a360, $9480, $95a0, $a360 dc.w $7560, $7680, $7680, $7440, $7020, $7560, $7560, $7560 dc.w $7440, $96e0, $76a0, $76a0, $7560, $7440, $7440, $76a0 dc.w $76a0, $7680, $7680, $7560, $7020, $7020, $7560, $7440 dc.w $7560, $7560, $a360, $b040, $b040, $a360, $95a0, $a360 dc.w $7440, $7560, $7560, $7020, $7440, $7440, $7020, $7560 dc.w $7020, $7560, $76a0, $76a0, $76a0, $7440, $7440, $7680 dc.w $7680, $7680, $7680, $7560, $7020, $7020, $7020, $7560 dc.w $7560, $7440, $9480, $b040, $b040, $a360, $a360, $b040 dc.w $7020, $7440, $7560, $7560, $7560, $7560, $7560, $7020 dc.w $7560, $7560, $76a0, $76a0, $7680, $7440, $95a0, $7680 dc.w $7680, $7560, $7560, $9480, $b040, $7440, $a360, $9480 dc.w $a360, $a360, $a360, $9480, $9480, $a360, $a360, $b040 dc.w $0000, $7440, $7560, $7020, $7020, $7440, $7560, $7680 dc.w $7680, $7680, $7680, $7680, $7680, $7680, $7680, $7560 dc.w $7560, $7560, $9480, $7560, $9480, $a360, $9480, $95a0 dc.w $a360, $a360, $b040, $b040, $a360, $95a0, $a360, $0000 dc.w $0000, $7560, $7020, $7440, $7020, $7020, $7680, $7680 dc.w $7680, $7680, $7680, $7680, $7560, $7560, $7560, $b040 dc.w $7020, $b040, $9480, $9480, $9480, $9480, $95a0, $95a0 dc.w $b040, $b040, $b040, $a360, $9480, $95a0, $b040, $0000 dc.w $0000, $7440, $7440, $7560, $7020, $7560, $7560, $7560 dc.w $7560, $7560, $7560, $7020, $7560, $9480, $7020, $7020 dc.w $b040, $7020, $9480, $9480, $9480, $9480, $95a0, $9480 dc.w $b040, $b040, $b040, $9480, $a360, $9480, $b040, $0000 dc.w $0000, $0000, $7560, $7440, $7560, $7680, $7020, $7020 dc.w $7560, $7560, $7020, $7020, $7560, $7020, $7020, $7020 dc.w $b040, $b040, $9480, $9480, $95a0, $95a0, $95a0, $95a0 dc.w $95a0, $95a0, $9480, $a360, $9480, $a360, $0000, $0000 dc.w $0000, $0000, $7560, $7440, $7560, $7680, $7020, $7020 dc.w $7560, $7560, $7020, $7020, $7560, $7020, $b040, $b040 dc.w $b040, $b040, $9480, $9480, $95a0, $95a0, $95a0, $95a0 dc.w $95a0, $95a0, $9480, $a360, $9480, $a360, $0000, $0000 dc.w $0000, $0000, $0000, $7440, $7020, $7560, $7020, $7020 dc.w $7440, $7560, $7560, $b040, $b040, $9480, $b040, $a360 dc.w $a360, $a360, $95a0, $95a0, $95a0, $95a0, $a360, $a360 dc.w $9480, $95a0, $95a0, $95a0, $9480, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $7560, $7020, $7020, $7020 dc.w $7020, $7440, $7680, $a360, $b040, $9480, $b040, $a360 dc.w $a360, $95a0, $95a0, $96c0, $96c0, $96c0, $9480, $a360 dc.w $a360, $9480, $9480, $95a0, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $7020, $7020, $7020 dc.w $7440, $7020, $95a0, $a360, $a360, $a360, $95a0, $a360 dc.w $a360, $95a0, $95a0, $96c0, $96c0, $96c0, $9480, $a360 dc.w $a360, $9480, $95a0, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $7020, $7020 dc.w $7020, $7440, $7440, $9480, $a360, $9480, $95a0, $9480 dc.w $9480, $95a0, $9480, $a360, $9480, $9480, $96c0, $95a0 dc.w $9480, $95a0, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $b040 dc.w $b040, $7440, $9480, $7560, $9480, $95a0, $9480, $95a0 dc.w $95a0, $a360, $a360, $a360, $a360, $9480, $95a0, $9480 dc.w $a360, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $a360, $7560, $a360, $9480, $9480, $95a0, $95a0 dc.w $95a0, $a360, $a360, $9480, $9480, $a360, $a360, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $a360, $a360, $a360, $9480 dc.w $9480, $9480, $9480, $a360, $0000, $0000, $0000, $0000 dc.w $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 ; this is the Object processor list current_list dc.l op_list1 working_list dc.l op_list2 .align .dphrase op_list1 ds.l 8*2*(NBALLS+4) .align .dphrase op_list2 ds.l 8*2*(NBALLS+4)
-
It looks like Hoverr.zip is a 3d demo not the game.
-
EMBRACE THE PLASMA :: a demo screen by lsl/checkpoint
swapd0 replied to sh3-rg's topic in Atari Jaguar Programming
cool, another coder for the jaguar -
EMBRACE THE PLASMA :: a demo screen by lsl/checkpoint
swapd0 replied to sh3-rg's topic in Atari Jaguar Programming
Yes on real hardware, I think that my jaguar it's buggy because with Flashback I got some polygons with vertical bars, instead of a solid color. -
EMBRACE THE PLASMA :: a demo screen by lsl/checkpoint
swapd0 replied to sh3-rg's topic in Atari Jaguar Programming
I get some dark pixels into the plasma -
Of course, the Jaguar has Zbuffer so it's easier to port OpenGL games. XD
-
BJL works with the parallel port but IIRC using a PCI card for parallel port doesn't work. I think that some guy from jagware told me that. You should try to get a skunk board because it's faster and less error prone. Some years ago I was using the BJL and I needed to write my own uploader (using packets) because I couldn't upload the native demo with the standard one. Or look for an old PC with a parallel port.
-
Today $50.000 = 36.084,95€, That's about 50% more money that I earn as C++ developer. Maybe I should start again to code for the Jaguar.
-
Why you wanna spend about $50k into a game if you'll never have some revenues? Imagine that you spend $50.000 and some coders make Tomb Raider just like the PSX version (imagine it...), how many carts you'll gona sell? Maybe 100, 200, even if you sell 1000 carts at $50 each, you're loosing money.
-
Where?
-
AC2014 is over, take a look at a few interesting pictures...
swapd0 replied to sh3-rg's topic in Atari Jaguar
Me too!!!1!! -
It looks that the polygon routine works with quads instead of triangles or a generic N-convex polygon routine.
-
I've been looking to the source code and there are a LOT of GPU code without comments, also the polygon drawing routines are IMHO a bit long.
-
Why don't you upload it to dropbox and put a link?
-
I don't like SF2 neither MK... XD
