Jump to content
Jagware

SCPCD

Level2
  • Content count

    1,134
  • Joined

  • Last visited

Everything posted by SCPCD

  1. Happy Birthday sh3-rg

    PoulphappyBirthday sh3 !
  2. Doom, Quake, etc...

    Happy birthday
  3. Gt Is The Man Of The Day

    Happy Birthday GT Turbo !
  4. Please remove it !!

    n'anniv
  5. A new jaguar fan is born !

    Félicitation \o/
  6. Software reset?

    it's not safe only if you would like to restart it from the last instruction or if you would like to know the last instruction executed by reading the PC register. If you don't care about both, you can kill it this way. The object processor is forced to restart each line at OLP addr, so it's not a problem.
  7. Software reset?

    to soft reset the jag, you need to do something like that : wait_blitter: move.l B_CMD, d0 ; Wait end last blitter cmd btst #0, d0 beq.s .wait_blitter move.w #$2700, sr ; movea.l #$4000, sp move.w #$FF00, INT1 ; disable all 68k jaguar interrupts move.w #$FFFF, INT2 ; 68k leave interrupts move.w #$FFFF, VI ; no vbl interrupts move.l #0, G_CTRL ; Stop GPU move.l #$00070007, G_END ; Big Endian move.l #%100011111000000000, G_FLAGS ; Clear Flags and interrupts move.l #0, D_CTRL ; Stop DSP move.l #$00070007, D_END ; Big Endian move.l #%100011111000000000, D_FLAGS ; Clear Flags and interrupts move.l #0, $1000 ; STOP Obj High move.l #4, $1004 ; STOP Obj Low move.l #$1000, d0 swap d0 move.l d0, OLP ; OLP pointer move.w #0, PIT0 ; disable timer move.w #0, PIT1 ; disable timer move.w #0, JPIT2_W ; disable timer move.w #0, JPIT1_W ; disable timer move.w #$3F00, JINT ; disable Jerry interrupts move.l #0, SMODE ; disable audio move.w #0, ASICTRL ; disable juart move.w #0, ASIDATA ; dummy read to clear fifo ;;;;=> reinit blitter regs move.l #$00000000,A1_BASE ; move.l #$00000000,A1_FLAGS ; move.l #$00000000,A1_CLIP ; move.l #$00000000,A1_PIXEL ; move.l #$00000000,A1_STEP ; move.l #$00000000,A1_FSTEP ; move.l #$00000000,A1_FPIXEL ; move.l #$00000000,A1_INC ; move.l #$00000000,A1_FINC ; move.l #$00000000,A2_BASE ; move.l #$00000000,A2_FLAGS ; move.l #$00000000,A2_MASK ; move.l #$00000000,A2_PIXEL ; move.l #$00000000,A2_STEP ; move.l #$00000000,B_COUNT ; move.l #$00000000,B_SRCD ; move.l #$00000000,B_DSTD ; move.l #$00000000,B_DSTZ ; move.l #$00000000,B_SRCZ1 ; move.l #$00000000,B_SRCZ2 ; move.l #$00000000,B_PATD ; move.l #$00000000,B_IINC ; move.l #$00000000,B_ZINC ; move.l #$00000002,B_STOP ; move.l #$00000000,B_I3 ; move.l #$00000000,B_I2 ; move.l #$00000000,B_I1 ; move.l #$00000000,B_I0 ; move.l #$00000000,B_Z3 ; move.l #$00000000,B_Z2 ; move.l #$00000000,B_Z1 ; move.l #$00000000,B_Z0 ; ;;;;<= and go back to your startup code
  8. Matmook's day !!

    N'anniv
  9. (3) Zero ?!

    Happy birthday zero
  10. Hum........

    Ny'anniv Orion_ !
  11. Another³ Birthday !!!

    happy birthday !
  12. AAAAAAAAAAAaaaaaaahiezhihfdhfhgf !!

    happy birthday fredifredo
  13. Developing in "C" in windows xp

    Found the bug in smac : you need to change those lines in "sect.c" in the "fixup" function : if(*fexpr == SYMBOL && fexpr[2] == ENDEXPR) if((attr & 0x0F00) == FU_JR) { // <-- correct line //if((attr & 0x0200) == FU_JR) { // <-- wrong line then some lines before the end of the same function : if((attr & 0x0F00) == FU_JR) { // <-- correct line //if((attr & 0x0200) == FU_JR) { // <-- wrong line if(orgactive) *fchptr.lp++ = orgaddr; else *fchptr.lp++ = 0x00000000; } If 0x0200 is applied to "attr", there will have not only FU_JR that will be valid, those next code also : #define FU_JR 0x0200 #define FU_MJR 0x0300 #define FU_NUM31 0x0600 #define FU_NUM32 0x0700
  14. Developing in "C" in windows xp

    if there is not too much depends for asm files that crash smac, i can take it a look
  15. Tranparency and RMW bit

    RMW makes : ADDSAT4 PIXC, LBC ADDSAT4 PIXR, LBR ADDSAT8 PIXY, LBY and if I remind correctly all composent of LB pixel (C, R and Y) are signed. On RGB pix this will have strange result
  16. Burning Eproms

    Because we don't know where the OP list is so we can accidentaly erased it when copying ROM to DRAM ?
  17. Too lazy i'am !!

    Thanks
  18. SCPCD-day

    Thanks Nyanpy birthday
  19. Happy Birthday sh3-rg

    Happy birthday SH-3
  20. About sprite positioning and video mode

    for the OP : X position is relative to HDB1/2 Y position is absolute, you can make relative value in your homemade OP List by computing YPos+VDB. the visible screen is inside the scare [HDB1/2 to HDE] and [VDB to VDE]. If VDE is greater than VBB, then the visible screen will cut at VBB. The correct method to center a screen is using HDB1/2, HDE, VDB and VDE. All those values are computed depending the screen mode (NTSC/PAL) Values should be the same in all color mode (RGB16, CRY, RGB24)
  21. Updated Bjl Loader Program

    like this : http://www.jagware.org/index.php?showtopic=836 ?
  22. Updated Bjl Loader Program

    ABS header : - Magic Number = 0x601B - TEXT segment size (4 Bytes) - DATA segment size (4 Bytes) - BSS segment size (4 Bytes) - Symbol table size (4 Bytes) - ? (4 Bytes) - TEXT base address (4 Bytes) - Flags = 0xFFFF - DATA base address (4 Bytes) - BSS base address (4 Bytes)
  23. Please remove it !!

    Nyanniv !!
  24. Collision

    collision: clr.w d0 clr.w d1 move.w OBJ1X,d0 add.w OBJ1W,d0 move.w OBJ2X,d1 cmp.w d0,d1 blt .none; if OBJ2X < (OBJ1X+OBJ1W) goto .none => should be if OBJ2X > (OBJ1X+OBJ1W) goto .none clr.w d0 clr.w d1 move.w OBJ1X,d0 move.w OBJ2X,d1 add.w OBJ2W,d1 cmp.w d0,d1 bgt .none; if (OBJ2X+OBJ2W) > OBJ1X goto .none => should be if (OBJ2X+OBJ2W) < OBJ1X goto .none clr.w d0 clr.w d1 move.w OBJ1Y,d0 add.w OBJ1H,d0 move.w OBJ2Y,d1 cmp.w d0,d1 blt .none; if OBJ2Y < (OBJ1Y+OBJ1H) goto .none => should be if OBJ2Y > (OBJ1Y+OBJ1H) goto .none clr.w d0 clr.w d1 move.w OBJ1Y,d0 add.w OBJ1H,d0 move.w OBJ2Y,d1 cmp.w d0,d1 blt .none; if OBJ2Y < (OBJ1Y+OBJ1H) goto .none (why do it again ? :p) clr.w d0 clr.w d1 move.w OBJ1Y,d0 move.w OBJ2Y,d1 add.w OBJ2H,d1 cmp.w d0,d1 bgt .none; if (OBJ2Y+OBJ2H) > OBJ1Y goto .none => should be if (OBJ2Y+OBJ2H) < OBJ1Y goto .none move.w #$FFFF,BG rts .none: move.w #$0000,BG rts "cmp" computes: destination - source => condition code. To check if destination > source : cmp src, dst bgt dst_greater_than_src To check if destination < source : cmp src, dst blt dst_lower_than_src
×