Sonic 1 - Richter's Art Trouble

Discussion in 'Discussion and Q&A Archive' started by warr1or2, Feb 25, 2014.

Thread Status:
Not open for further replies.
  1. warr1or2

    warr1or2 I AM CLG Member

    Joined:
    Apr 7, 2008
    Messages:
    417
    Location:
    Town Creek, AL
    I'm having a bit of trouble with getting Richter's art to work right in Sonic 1.

    [​IMG]

    The top is what it shows in game (0s & 1s over his "Slash" attack) The bottom (Taken from SonMapEd) Is what I'm needing.

    He's using the Extended Sonic's art & map limit that I uaed from the retro, and still the top os the result.

    How can I fix this?
     
  2. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    How many tiles are you at? Also, maybe put an align $20000, under the binclude or include ( if in ASM format) Sonic DPLC file location in your ASM file.


    Edit: But if your over 1000 tiles, you have reached your limit.
     
    Last edited by a moderator: Feb 25, 2014
  3. MarkeyJester

    MarkeyJester ♡ ! Member

    Joined:
    Jun 27, 2009
    Messages:
    2,867
    Actually, there's no need to do that, since the art is copied manually to a RAM buffer, and DMA transfered from RAM to to VRAM, the entire of RAM (let alone the buffer) fits within the $20000 bank window range.

    The trouble is, limited VRAM, that is to say he's attempting to copy more than 17 (hex) tiles of art. The transfer is set to only copy 2E0 bytes (17 tiles). To expand the size, the routines "loc_CD4", "loc_DAE", "loc_ED8" and "loc_FAE" have this same setup:

    tst.b ($FFFFF767).w
    beq.s loc_1060
    lea ($C00004).l,a5
    move.l #$94019370,(a5)
    move.l #$96E49500,(a5)
    move.w #$977F,(a5)
    move.w #$7000,(a5)
    move.w #$83,($FFFFF640).w
    move.w ($FFFFF640).w,(a5)
    move.b #0,($FFFFF767).wThe 94019370 is what you're interested in 170 is 2E0 divided by 2 (or if you'd prefer, 17 x 10). Increase the value to increase the number of bytes to transfer.
    You will however, need to do something about the points art, either remove the points from the game, or find a new VRAM location for them. Sonic's art will overwrite that space if you increase the transfer amount. You might also want to be careful about standard RAM too, since the buffer has been set for 2E0 bytes, going over too much may overwrite whatever else is in RAM.
     
  4. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    Once again Markey you have bested me >>; oh well, now I've learned something so it's all good, good job like usual.
     
  5. warr1or2

    warr1or2 I AM CLG Member

    Joined:
    Apr 7, 2008
    Messages:
    417
    Location:
    Town Creek, AL
    i've got it now.


    i've ported the sonic 2's sonic art map cues anidata to sonic 1 to have spindash & super sonic ported.


    followed retro's guide for spindash porting, and it's fixed. the only prob now is that richter's art is loading over sonic's too. this is an easy fix. scratch that, tried to fix and it goes corrupt.


    i was at step 3 - replacing SonicDynPlc using the cmpi.b #1,(character) branching operations and it went corrupt so i loaded back the original with branching operations


    went back and overwrote the SonicDynPLC without the character branching command, then decided to make a RichterDynPLC, copying all of SonicDynPlc, then added the cmpi.b #1,(character) at the beginning of SonicDynplc so that way all of sonic's loads sonic's and all of Richter's loads Richters. that fixed it.


    Now if only i could fix his "goinng in a loop"
     
    Last edited by a moderator: Feb 26, 2014
Thread Status:
Not open for further replies.