My own credits system showcase

Messages
27
this is basically my own credits
quick showcase if you have any ideas you can share then go ahead :p
IF you wanna see the code here you go should be simple
Code:
Credits_EC:
                ;jmp     Main_Running_Tittle
        move.b    #MusID_Stop,d0
        jsr    PlaySound ; stop music
        jsr    Pal_FadeToBlack
        clearRAM Sprite_Table_Input,Sprite_Table_Input_End
                clearRAM Object_RAM,Object_RAM_End
            clearRAM Camera_RAM,Camera_RAM_End ; clear camera RAM and following variables
        move    #$2700,sr
        move.w    (VDP_Reg1_val).w,d0
        andi.b    #$BF,d0
        move.w    d0,(VDP_control_port).l
        jsr    ClearScreen
               jsr    (Init_SpriteTable).l
        lea    (VDP_control_port).l,a6
        move.w    #$8B03,(a6)
        move.w    #$8230,(a6)
        move.w    #$8407,(a6)
        move.w    #$857C,(a6)
        move.w    #$9001,(a6)
        move.w    #$8004,(a6)
        move.w    #$8720,(a6)
        move.w    #$8ADF,(Hint_counter_reserve).w
        move.w    (Hint_counter_reserve).w,(a6)
        clr.b    (Level_started_flag).w
                move.b  #0,(s3k_level_mode).w
                lea    (Pal_BGND).l,a1   ; load line 2 as the same but it will cycle later
        jsr     PalLoad_Line1

                   clr.w    (VDP_Command_Buffer).w
            move.l    #VDP_Command_Buffer,(VDP_Command_Buffer_Slot).w
                lea    (MapEni_S3MenuBG).l,a0
        lea    (Chunk_Table).l,a1
        move.w    #1,d0
        jsr    (Eni_Decomp).l
        lea    (Chunk_Table).l,a1
        move.l    #$60000003,d0
        moveq    #$27,d1
        moveq    #$1B,d2
        jsr    (Plane_Map_To_VRAM).l
                move.l    #vdpComm(tiles_to_bytes(ArtTile_ArtNem_Title_CreditsFont),VRAM,WRITE),(VDP_control_port).l
              lea    (NemCreditsFont).l,a0
              jsr    NemDec
        lea    (ArtKos_S3MenuBG).l,a0                ; Decompress source
        lea    (Chunk_Table).l,a1                ; Decompress destination/Transfer source
        movea.w    #tiles_to_bytes(ArtTile_ArtKos_S3MenuBG),a2    ; Transfer destination
        jsr    (KosArt_To_VDP).l
        move.l    #locret_C56E,(_unkEF44_1).w
        move.b    #VintID_Savescreen,(V_int_routine).w
        jsr    (Wait_VSync).l



                lea    (Pal_SaveMenuBG).l,a0
        lea    (Target_palette).w,a1
        moveq    #7,d0

-
        move.l    (a0)+,(a1)+
        dbf    d0,-


                jsr    (Load_Sprites).l
        jsr    (Process_Sprites).l
        jsr    (Render_Sprites).l
        jsr    (Process_Kos_Queue).l
            jsr     (Process_Kos_Module_Queue).l
        moveq    #0,d0
        move.w    d0,(Ring_count).w
        move.l    d0,(Timer).w
        move.b    d0,(Extra_life_flags).w
        move.w    d0,(Debug_placement_mode).w
        move.w    d0,(Level_Inactive_flag).w
        move.w    d0,(Timer_frames).w
        jsr    OscillateNumInit
        move.b    #1,(Update_HUD_score).w
        move.b    #1,(Update_HUD_rings).w
        move.b    #0,(Update_HUD_timer).w
        move.w    #1800,(Demo_Time_left).w
        move.l  #ObjScrollingCreditFrames,(Player_1).w
        move.l  #ObjeectMakeMoreSprite,(Player_2).w
        move.b    #VintID_TitleCard,(Vint_routine).w
        jsr    WaitForVint
                jsr    (Load_Sprites).l
        jsr    (Process_Sprites).l
        jsr    (Render_Sprites).l
        jsr    (Process_Kos_Queue).l
            jsr     (Process_Kos_Module_Queue).l




            move.w    #$3F,(Palette_fade_start).w
        move.w    (VDP_Reg1_val).w,d0
        ori.b    #$40,d0
        move.w    d0,(VDP_control_port).l
        move.w    #$100,(Demo_Time_left).w
        jsr    Pal_FadeFromBlack

; ---------------------------------------------------------------------------
; Main ending sequence loop
; ---------------------------------------------------------------------------

CreditsLoop:

    jsr    PauseGame
    move.b    #VintID_Level,(Vint_routine).w
    jsr    (Process_Kos_Queue).l
    jsr    WaitForVint
    jsr    (RunObjects).l
        jsr        (Load_Sprites).l
           jsr    (Render_Sprites).l
    jsr    RunPLC_RAM
    jsr     (Process_Kos_Module_Queue).l
    jsr    OscillateNumDo
    jsr    ChangeRingFrame
         bra.w    CreditsLoop

ObjeectMakeMoreSprite:
                move.l  #DeleteObject,(a0)
            ;lea     CreditsChildData2(pc),a2
                ;moveq  #$1,d6
                ;jmp      CreateChildComplexPositons2
                 rts
ObjScrollingCreditFrames:

                  move.w    #$100,x_pos(a0)
                move.w    #$90,y_pos(a0) ; top of the screen
                move.l    #CreditsMappings,mappings(a0)
        move.w    #ArtTile_ArtNem_Title_CreditsFont+$2000,art_tile(a0)
        move.w    #$0,priority(a0)
        move.b    #$18,width_pixels(a0)
        move.b    #$18,height_pixels(a0)
        move.w  #$50,ObjTimer(a0)
        move.l  #DisplayLettersCredits,(a0)

DisplayLettersCredits:
                subq.w  #1,ObjTimer(a0)
                bpl.s   .GoExcuteObjects
                lea     CreditsChildData(pc),a2
                moveq  #$7,d6
                jsr      CreateChildComplexPositons3


                move.l  #.GoExcuteObjects,(a0)
.GoExcuteObjects:

                jsr     ObjectMove
        jmp     Draw_Sprite

CreditsChildData:
                  dc.w  Dynamic_object_RAM+object_size*2
                  dc.l  CreditsFramesAndTimer
                  dc.w  1  ; neto
                  dc.w  $0
                  dc.w  -$DE;-$20 needed location

                  dc.w  Dynamic_object_RAM+object_size*3
                  dc.l  CreditsFramesAndTimer
                  dc.w  2 ; pika noob
                  dc.w  $0
                  dc.w  -$DE
                  dc.w  Dynamic_object_RAM+object_size*4
                  dc.l  CreditsFramesAndTimer
                  dc.w  3   ; sonic duthc
                  dc.w  $0
                  dc.w  -$DE
CreditsChildData2:
                  dc.w  Dynamic_object_RAM+object_size*5
                  dc.l  CreditsFramesAndTimer
                  dc.w  4 ;
                  dc.w  $0
                  dc.w  -$DE
                  dc.w  Dynamic_object_RAM+object_size*6
                  dc.l  CreditsFramesAndTimer
                  dc.w  5   ;
                   dc.w $0
                  dc.w  -$DE

                   dc.w  Dynamic_object_RAM+object_size*7
                  dc.l  CreditsFramesAndTimer
                  dc.w  6   ; sanity
                   dc.w $0
                  dc.w  -$E0
CreditsChildData3
                   dc.w  Dynamic_object_RAM+object_size*8
                  dc.l  CreditsFramesAndTimer
                  dc.w  7   ; chron ig
                   dc.w $0
                  dc.w  -$100
                  ;

                  dc.w  Dynamic_object_RAM+object_size*9
                  dc.l  CreditsFramesAndTimer
                  dc.w  8   ;  coolest fucker around
                   dc.w $60
                  dc.w  -$110

                  ;dc.w  Dynamic_object_RAM+object_size*$A
                  ;dc.l  CreditsFramesAndTimer
                  ;dc.w  9   ;
                  ; dc.w $0
                  ;dc.w  -$120
CreditsFramesAndTimer:

                  move.w    #$100,x_pos(a0)
                  move.w  child_dx(a0),d0
                  add.w   d0,x_pos(a0)
                  moveq   #0,d0
                move.w  ObjTimer(a0),d0
                move.b  d0,mapping_frame(a0)
                moveq   #0,d0
                move.b  mapping_frame(a0),d0
                add.w   d0,d0
                lea     CreditsTimerSetting(pc,d0),a2
                move.w  (a2)+,ObjTimer(a0)
                move.l    #CreditsMappings,mappings(a0)
        move.w    #ArtTile_ArtNem_Title_CreditsFont+$2000,art_tile(a0)
        move.w    #$0,priority(a0)
        move.b    #$40,width_pixels(a0)
        move.b    #$18,height_pixels(a0)
        move.l  #Follow_CreditsMove,(a0)

Follow_CreditsMove:
            subq.w  #1,ObjTimer(a0)
            bpl.s   ReturnCreditsNothing
           jsr   ChildGetSavedFromParentDistance
            moveq    #0,d0
            move.b  mapping_frame(a0),d0
            add.w  d0,d0
            lea   CreditSpriteStoppingLocation(pc,d0),a2
            move.w      y_pos(a0),d1
        cmp.w    (a2)+,d1
            bne.s       +
            move.w     #$50,ObjTimer(a0)
            move.l    #StopThenGoAway_Credits,(a0)
            jmp   Draw_Sprite

+
           move.w  #$2,d0
           ext.l   d0
           add.w  d0,ChildTrackedY(a0)
           jmp   Draw_Sprite
ReturnCreditsNothing:
              rts
CreditsTimerSetting: dc.w  $0,$20,$30,$40,$50,$60,$70,$100,$10A
                      even
StopThenGoAway_Credits:
                subq.w #1,ObjTimer(a0)
                bne.s   +
                move.w  #$400,x_vel(a0)

                move.l  #CheckToDeleteCreditsName,(a0)
                jsr   ObjectMove
+
                jmp   Draw_Sprite
CheckToDeleteCreditsName:
                jsr   ObjectMove
                cmpi.w  #$200,x_pos(a0)
                bne.s  +
                jmp    DeleteObject
+
                jmp   MarkObjGone
CreditSpriteStoppingLocation:
                      dc.w  $A0 ; under the lava gaming text
                      dc.w  $B0 ; under the lava gaming text
                      dc.w  $D0 ; under the Neto  text
                      dc.w  $F0 ; under the Pika text
                      ;
                      dc.w  $110 ; under the Pika text
                      dc.w  $130 ; under the Pika text
                      dc.w  $150 ; under the Pika text
                      ; same locations on screen
                      dc.w  $110 ; under the Pika text
                      dc.w  $130 ; under the Pika text
                      dc.w  $A0 ; under the Pika text
                      even
now the subroutine that handels the objects / sprites
Code:
CreateChildComplexPositons3:
        move.w   (a2)+,a3
        lea      (a3),a1
        move.w    a0,parent3(a1)
        move.l    mappings(a0),mappings(a1)
        move.w    art_tile(a0),art_tile(a1)
        move.l    (a2)+,(a1)
        move.w    (a2)+,ObjTimer(a1)
        move.w    (a2)+,child_dx(a1)
        move.w    (a2)+,ChildTrackedY(a1)
        move.w    x_pos(a0),x_pos(a1)
        move.w    y_pos(a0),y_pos(a1)
        dbf    d6,CreateChildComplexPositons3
        rts
now what this does insted of pulling a random slot from Object ram you just tell it what slot to use i did this to avoid issues
EDIT : i have made a sonic 1 port of this
Code:
; ===========================================================================
; ---------------------------------------------------------------------------
; Credits ending sequence
; ---------------------------------------------------------------------------
ObjPointer = $24 ; and $25, $26,$27
ScreenParent = $1E
Credits:                ; XREF: GameModeArray
       move.b    #$E4,d0
        bsr.w    PlaySound_Special ; stop music
        bsr.w    ClearPLC
        bsr.w    Pal_FadeFrom
        move    #$2700,sr
        bsr.w    SoundDriverLoad
        lea    ($C00004).l,a6
        move.w    #$8004,(a6)
        move.w    #$8230,(a6)
        move.w    #$8407,(a6)
        move.w    #$9001,(a6)
        move.w    #$9200,(a6)
        move.w    #$8B03,(a6)
        move.w    #$8720,(a6)
        clr.b    ($FFFFF64E).w
        bsr.w    ClearScreen
        lea    ($FFFFD000).w,a1
        moveq    #0,d0
        move.w    #$7FF,d1

CreditsScreenObjRam:
        move.l    d0,(a1)+
        dbf    d1,CreditsScreenObjRam ; fill object RAM ($D000-$EFFF) with    $0

        move.l    #$40000000,($C00004).l
        lea    (Nem_JapNames).l,a0 ; load Japanese credits
        bsr.w    NemDec
        move.l    #$54C00000,($C00004).l
        lea    (Nem_CreditText).l,a0 ;    load alphabet
        bsr.w    NemDec
        lea    ($FF0000).l,a1
        lea    (Eni_JapNames).l,a0 ; load mappings for    Japanese credits
        move.w    #0,d0
        bsr.w    EniDec
        lea    ($FF0000).l,a1
        move.l    #$40000003,d0
        moveq    #$27,d1
        moveq    #$1B,d2
        bsr.w    ShowVDPGraphics
             lea    ($FFFFFB80).w,a1
        moveq    #0,d0
        move.w    #$1F,d1

ClearTargettedPallete_Creidsts:
        move.l    d0,(a1)+
        dbf    d1,ClearTargettedPallete_Creidsts ; fill pallet with 0    (black)

        moveq    #3,d0        ; load Sonic's pallet
        bsr.w    PalLoad1
        move.b    #$8A,($FFFFD000).w
        move.l    #ObjScrollingCreditFrames,($FFFFD000+$24).w ; load "SONIC TEAM PRESENTS"    object
        jsr    ObjectsLoad
        jsr    BuildSprites
        bsr.w    Pal_FadeTo
        move    #$2700,sr
        move.l    #$40000001,($C00004).l
        lea    (Nem_TitleFg).l,a0 ; load title    screen patterns
        bsr.w    NemDec
        move.l    #$60000001,($C00004).l
        lea    (Nem_TitleSonic).l,a0 ;    load Sonic title screen    patterns
        bsr.w    NemDec
        move.l    #$62000002,($C00004).l
        lea    (Nem_TitleTM).l,a0 ; load "TM" patterns
        bsr.w    NemDec
        move.l    #$62400002,($C00004).l
        lea    (Nem_TitleMenu).l,a0 ; load "Title Menu text" patterns
        bsr.w    NemDec
Cred_WaitLoop:
        move.b    #4,($FFFFF62A).w
        bsr.w    DelayProgram
        bsr.w    RunPLC_RAM
                   jsr    ObjectsLoad
        jsr    BuildSprites
        bra.s   Cred_WaitLoop
        ; basically the format
        ; wip obj porting
RunObjectEC:
        lea    ($FFFFD000).w,a0 ; i hope thats the right addr
    moveq    #$40,d7 ; how many credits to procces

    move.l  ObjPointer(a0),d0
    beq.s    RunNextObjectEC
    movea.l    d0,a1
    jsr    (a1)

 ;loc_15FDC:
RunNextObjectEC:
        lea    $40(a0),a0 ; load 0bj address
    dbf    d7,RunObjectEC
RunObjects_EndEC:
       rts

ObjTimer = $3E
ChildTrackedY = $3A
child_dx = $36
ObjScrollingCreditFrames:
                move.w    #$100,$8(a0)
                move.w    #$90,$C(a0) ; top of the screen
                move.l    #Map_ConQuestCredits,4(a0)
        move.w    #$5A0,2(a0)
        ;move.w    #$0,priority(a0)
        ;move.b    #$18,width_pixels(a0)
        ;move.b    #$18,height_pixels(a0)
        move.w  #$50,ObjTimer(a0)
        move.l  #DisplayLettersCredits,$24(a0)

DisplayLettersCredits:
                subq.w  #1,ObjTimer(a0)
                bpl.s   GoExcuteObjects_Credits
                lea     CreditsChildData(pc),a2
                lea     (Sonic1IdSettings).l,a4
                moveq  #$9,d6
                jsr      CreateChildComplexPositons3


                move.l  #GoExcuteObjects_Credits,$24(a0)
GoExcuteObjects_Credits:

                jsr     SpeedToPos
        jmp     DisplaySprite
CreditScreenObjRam: equ $FFFFD800
CreditsChildData:
                  dc.w  CreditScreenObjRam+$40*2
                  dc.l  CreditsFramesAndTimer
                  dc.w  1  ; neto
                  dc.w  $0
                  dc.w  -$DE;-$20 needed location

                  dc.w  CreditScreenObjRam+$40*3
                  dc.l  CreditsFramesAndTimer
                  dc.w  2 ; pika noob
                  dc.w  $0
                  dc.w  -$DE
                  dc.w  CreditScreenObjRam+$40*4
                  dc.l  CreditsFramesAndTimer
                  dc.w  3   ; sonic duthc
                  dc.w  $0
                  dc.w  -$DE
CreditsChildData2:
                  dc.w  CreditScreenObjRam+$40*5
                  dc.l  CreditsFramesAndTimer
                  dc.w  4 ;
                  dc.w  $0
                  dc.w  -$DE
                  dc.w  CreditScreenObjRam+$40*6
                  dc.l  CreditsFramesAndTimer
                  dc.w  5   ;
                   dc.w $0
                  dc.w  -$DE

                   dc.w  CreditScreenObjRam+$40*7
                  dc.l  CreditsFramesAndTimer
                  dc.w  6   ; sanity
                   dc.w $0
                  dc.w  -$E0
CreditsChildData3
                   dc.w  CreditScreenObjRam+$40*8
                  dc.l  CreditsFramesAndTimer
                  dc.w  7   ; chron ig
                   dc.w $0
                  dc.w  -$100
                  ;

                  dc.w  CreditScreenObjRam+$40*9
                  dc.l  CreditsFramesAndTimer
                  dc.w  8   ;  coolest fucker around
                   dc.w $60
                  dc.w  -$110

                  dc.w  CreditScreenObjRam+$40*$A
                  dc.l  CreditsFramesAndTimer
                  dc.w  9   ; random name
                   dc.w -$30
                  dc.w  -$120

                  dc.w  CreditScreenObjRam+$40*$B
                  dc.l  CreditsFramesAndTimer
                  dc.w  $A   ; trickster
                   dc.w -$34
                   dc.w  -$120

Sonic1IdSettings: dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  dc.b $8A
                  even
CreateChildComplexPositons3:
        move.w   (a2)+,a3
        lea      (a3),a1
        move.w    a0,ScreenParent(a1)
        move.l    $4(a0),$4(a1)
        move.w    2(a0),2(a1)
        move.b  (a4)+,(a1)
        move.l    (a2)+,$24(a1)
        move.w    (a2)+,ObjTimer(a1)
        move.w    (a2)+,child_dx(a1)
        move.w    (a2)+,ChildTrackedY(a1)
        move.w    $8(a0),$8(a1)
        move.w    $C(a0),$C(a1)
        dbf    d6,CreateChildComplexPositons3
        rts
CreditsFramesAndTimer:
                move.b  #$2,1(a0)
        move.l    #Map_ConQuestCredits,4(a0)
        move.w    #$5A0,2(a0)

                  move.w  child_dx(a0),d0
                  add.w   d0,$8(a0)
                  moveq   #0,d0
               move.w  ObjTimer(a0),d0
                move.b  d0,$1A(a0)
                moveq   #0,d0
                move.b  $1A(a0),d0
                add.w   d0,d0
                lea     (CreditsTimerSetting).l,a2
                add.w   d0,a2
                move.w  (a2)+,ObjTimer(a0)
               ; move.l    #CreditsMappings,mappings(a0)
    ;    move.w    #ArtTile_ArtNem_Title_CreditsFont+$2000,art_tile(a0)
    ;    move.w    #$0,priority(a0)
    ;    move.b    #$40,width_pixels(a0)
    ;    move.b    #$18,height_pixels(a0)
        move.l  #Follow_CreditsMove,ObjPointer(a0)
Follow_CreditsMove:

         subq.w  #1,ObjTimer(a0)
            bpl.s   ReturnCreditsNothing
           jsr   ChildGetSavedFromParentDistance
           moveq    #0,d0
            move.b  $1A(a0),d0
            add.w  d0,d0
            lea   (CreditSpriteStoppingLocation).l,a2
           add.w  d0,a2
           move.w      $C(a0),d1
        cmp.w    (a2)+,d1
            bne.s       MoveSpriteBeforeCorndationsSet
            moveq    #0,d0
            move.b  $1A(a0),d0
           add.w  d0,d0
           lea   (DiffrentGoAwayTimer).l,a2
           add.w  d0,a2  ; advance in addr
           move.w     (a2)+,ObjTimer(a0)
            cmpi.b    #$8,$1A(a0)
            bne.s     GoForNormalGoAwayCredit
           move.l    #StopThenMoveDownCredits,ObjPointer(a0)
            jmp   DisplaySprite
GoForNormalGoAwayCredit:
           move.l    #StopThenGoAway_Credits,ObjPointer(a0)
            jmp   DisplaySprite

MoveSpriteBeforeCorndationsSet:
           move.w  #$2,d0
           ext.l   d0
           add.w  d0,ChildTrackedY(a0)
           jmp   DisplaySprite
ReturnCreditsNothing:
              rts

StopThenGoAway_Credits:
                subq.w #1,ObjTimer(a0)
               bne.s   DisplayWhenTimerSetting_CountDown
                move.w  #$400,$10(a0)

                move.l  #CheckToDeleteCreditsName,ObjPointer(a0)
                jsr   SpeedToPos
DisplayWhenTimerSetting_CountDown:
                jmp   DisplaySprite
CheckToDeleteCreditsName:
                jsr   SpeedToPos
                cmpi.w  #$200,$8(a0)
                bne.s  DisplaySpriteTimer_0
GoForDeletingCredits:
                jmp    DeleteObject
DisplayWhenOnCorrectCordnates:
                jmp   MarkObjGone

StopThenMoveDownCredits:
                subq.w #1,ObjTimer(a0)
                bne.s   DisplaySpriteTimer_0
                move.w  #$600,$12(a0)
                move.l  #CreditsMarkGoned,ObjPointer(a0)

DisplaySpriteTimer_0:
              jmp   DisplaySprite
CreditsMarkGoned:
        move.w    $C(a0),d0
        sub.w    ($FFFFF704).w,d0
        addi.w    #$80,d0
        cmpi.w    #$200,d0
        bhi.w    GoForDeletingCredits
        jsr   ObjectFall
        jmp    (DisplaySprite).l
CreditSpriteStoppingLocation:
                      dc.w  $A0 ; under the lava gaming text
                      dc.w  $B0 ; neto
                      dc.w  $D0 ; pika
                      dc.w  $F0 ; sthduth
                      ;
                      dc.w  $110 ; jay kurin
                      dc.w  $130 ; sr gandy
                      dc.w  $14A ; sanity
                      ; same locations on screen
                      dc.w  $110 ; chron
                      dc.w  $130 ;  coolest fucker around
                      dc.w  $120 ; random name text
                      dc.w  $150 ; trickster text
                      even
                      ; time until the credits go away from screen
DiffrentGoAwayTimer:
                     dc.w  $40 ; under the lava gaming text
                      dc.w  $10 ; neto
                      dc.w  $20 ; pika
                      dc.w  $30 ; sthduth
                      ;
                      dc.w  $40 ; jay kurin
                      dc.w  $50 ; sr gandy
                      dc.w  $50 ; sanity
                      ; same locations on screen

                      dc.w  $20 ; chron
                      dc.w  $40 ;  coolest fucker around
                      dc.w  $50 ; random name text
                      dc.w  $10 ; trickster text
CreditsTimerSetting: dc.w  $0,$20,$30,$40,$50,$60,$70,$100,$10A,$1C0,$1A0
                      even
MainObjectDead:     ; unused feature in here
   jmp DeleteObject
ChildGetSavedFromParentDistance:
        jsr    ChildObjectMove(pc)

        movea.w    ScreenParent(a0),a1
      ;  tst.l   ObjPointer(a1)  ; is parent alive ?    (if its nothing object aka it has issues deleting child sprites)
      ;  beq.s    MainObjectDead     ; no then turn this child object to badnick parts
      ;  cmpi.l  #Obj27,ObjPointer(a1)       ; is the parent an exploation ?
      ;  beq.s   MainObjectDead     ; mark child object destroyed
      ;  cmpi.l  #Obj58,ObjPointer(a1)       ; is the parent an exploation ? (if this routine is used in a boss)
      ;  beq.s   MainObjectDead     ; mark child object destroyed
        move.b   $22(a1),$22(a0)
        btst    #0,$22(a0) ; is the data the child is getting from parent left or right
        beq.s   LeftFacingChild
ChildGetSavedFromParentDistance2:
           move.w    $8(a1),d0    ; get child x pos
    move.w    child_dx(a0),d1  ; get its needed distance
    add.w    d1,d0            ; give it the distance into x _pos distance from parent
    move.w    d0,$8(a0)     ; ^
    move.w    $C(a1),d0    ; same thing above but gets trancked y pos
    move.w    ChildTrackedY(a0),d1
    add.w    d1,d0
    move.w    d0,$C(a0)
        rts
LeftFacingChild:
           move.w    $8(a1),d0   ; same as normal x pos but
    move.w    child_dx(a0),d1
    sub.w    d1,d0          ; subtract the distance
    move.w    d0,$8(a0)

    move.w    $C(a1),d0
    move.w    ChildTrackedY(a0),d1    ; same but subtract vertical distance
    sub.w    d1,d0
    move.w    d0,$C(a0)
           rts
ChildObjectMove:
    move.w    $10(a0),d0
        bsr.w    ChildDo_xmove
    move.w    $12(a0),d0
    bra.w   Childdo_ymove
ChildDo_xmove:
    ext.l    d0
    asl.l    #8,d0
    add.l    d0,child_dx(a0)
    rts
Childdo_ymove:
    ext.l    d0
    asl.l    #8,d0
    add.l    d0,ChildTrackedY(a0)
    rts
place this insted of your credits and you are gonna have to modfy obj $8A that being the sonic team presents
Code:
Obj8A:                    ; XREF: Obj_Index

                move.l     $24(A0),A1
                jmp     (A1)
ObjCreditsPoint:
        move.l    #Obj8A_Display,$24(a0)
        move.w    #$120,8(a0)
        move.w    #$F0,$C(a0)
        move.l    #Map_obj8A,4(a0)
        move.w    #$5A0,2(a0)
        move.w    ($FFFFFFF4).w,d0 ; load    credits    index number
        move.b    d0,$1A(a0)    ; display appropriate sprite
        move.b    #0,1(a0)
        move.b    #0,$18(a0)
        cmpi.b    #4,($FFFFF600).w ; is the scene    number 04 (title screen)?
        bne.s    Obj8A_Display    ; if not, branch
        move.w    #$A6,2(a0)
        move.b    #$A,$1A(a0)    ; display "SONIC TEAM PRESENTS"
        tst.b    ($FFFFFFE3).w    ; is hidden credits cheat on?
        beq.s    Obj8A_Display    ; if not, branch
        cmpi.b    #$72,($FFFFF604).w ; is    Start+A+C+Down being pressed?
        bne.s    Obj8A_Display    ; if not, branch
        move.w    #$EEE,($FFFFFBC0).w ; 3rd pallet, 1st entry = white
        move.w    #$880,($FFFFFBC2).w ; 3rd pallet, 2nd entry = cyan
        jmp    DeleteObject
; ===========================================================================

Obj8A_Display:                ; XREF: Obj8A_Index
        jmp    DisplaySprite
that means now $24 is sorting Jmping pointers to code that means now any time you call obj 8A you have to use $24 to jump to the correct pointer if you leave it that means you are jumping to 0 that being the rom header that can lead to bad results also an edit on BuildSprite Rroutine at
Code:
 loc_D6DE
you will find
Code:
 move.w    $A(a0),d2
to
Code:
move.w    $C(a0),d2
now you have to edit Every screen object that uses $A that being sonic 1 retarded way on display objects on y pos on screen aka Bit2 in render_flags now every object that uses $A change it t $C that means you can now use SpeedToPos in screen objects good luck !
 
Last edited:
Back
Top