Just an idea I have.

Discussion in 'Discussion and Q&A Archive' started by JeffCharizardFlame, Feb 3, 2014.

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

    JeffCharizardFlame Escape Reality and Play Video Games Member

    Joined:
    Jan 27, 2013
    Messages:
    37
    Location:
    United States
    Well, it certainly HAS been a while since I've wanted to contribute to this community, mainly due to school. This fact, on top of me being a sophomore in high school with nothing better to do after school, is what's pressured me to offer up my idea and ask for some assistance in figuring it out.

    My idea for a hack is this: I've always liked Tails -when he's not controlled by the CPU, of course- and so when I saw hacks of Sonic 1 where Tails is either included as a playable character (Sonic 1 Remastered) or as the main character entirely (Tails in Sonic 1) I wondered why there are no hacks of Tails being the leader. So, that's my idea. I'm also thinking of adding on to this and doing minor updates, like removing the Speed Cap -the easy part- and some other things. Most likely I'll do it to Sonic 2, but I still need help in editing the sprite mappings and that stuff for changing player 1 to tails and the cpu to sonic. Being pointed to a tutorial might also help. I'd also appreciate suggestions for additions into the hack, just make sure it's doable. XD
     
  2. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    Here is what your after :p

    [​IMG]

    [​IMG]

    Here is a little hinty hint..


    Obj01_Init:
    cmpa.w #maincharacter,a0 > this
    bne.s Obj01_Init_2Pmode > this
    tst.b (Last_star_pole_hit).w
    bne.s Obj01_Init_Continued
    ; only happens when not starting at a checkpoint:
    move.w #$780,art_tile(a0)
    bsr.w Adjust2PArtPointer
    move.b #$C,layer(a0)
    move.b #$D,layer_plus(a0)
    move.w x_pos(a0),(Saved_x_pos).w
    move.w y_pos(a0),(Saved_y_pos).w
    move.w art_tile(a0),(Saved_art_tile).w
    move.w layer(a0),(Saved_layer).w
    bra.w Obj01_Init_Continued

    InitPlayers_TailsandSonic:
    move.b #2,(MainCharacter).w ; load Obj02 tails object at $FFFFB000 > this
    move.b #8,(tails_Dust).w ; load Obj08 Sonic's spindash dust/splash object at $FFFFD100
    move.b #1,(Sidekick).w ; load Obj01 Sonic object at $FFFFB040 > this


    Mind you this is from Sonic 2.asm, and some code is not shown since its just a hint lol

    Edit; a  lot more things need to be done though like collision height and floor reset and all that jazz, and Knuckles is more of a chore, especially if he is not ported lol

    Edit2: > = prime hints
     
    Last edited by a moderator: Feb 4, 2014
  3. JeffCharizardFlame

    JeffCharizardFlame Escape Reality and Play Video Games Member

    Joined:
    Jan 27, 2013
    Messages:
    37
    Location:
    United States
    Thank you for putting that up here for me. That's a step in the right direction. Now, since I somewhat know where to look, I can detail what I'm going to do with it now after thinking, prioritized.

    1. Get tails as the leader. Most likely will need to do some bugfixes as well, seeing as how the computer is controlling sonic and stuff like that.

    2. Update level layouts using the best utility for them.

    3. Do some updates on the sprites for signposts, enemies (to more or less follow their new style from the modern games), and other objects.

    Edit: OK, after some searching through find, I'm pretty sure I might have found it. I want to make sure I've hit the head on the nail, so I'm going to say that it's located at loc_19F76: Obj_01_Sub_0: Obj01_Mane. and then I've found where the initplayers is at, now I'm not sure what to do for getting tails in as leader.
     
    Last edited by a moderator: Feb 4, 2014
  4. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    Initplayers_Tailsandsonic: is new and are by the Initplayers: routine. as for the Obj01_init: the label; Obj01_Init_2Pmode is new also .Study Initialize players and character initializes. If you are hacking Sonic 1 these may be different.

    edit: like I said, just hints lol

    Edit2: Oh also look at how tails object loads him in as the sidekick, thats how I made Obj01_Init_2Pmode, code.

    Edit3: I Hope I am being of some help here.
     
    Last edited by a moderator: Feb 4, 2014
  5. JeffCharizardFlame

    JeffCharizardFlame Escape Reality and Play Video Games Member

    Joined:
    Jan 27, 2013
    Messages:
    37
    Location:
    United States
    OK, I think I had to add those in, the hints you were hinting at. so I did that for obj01. Now, for InitPlayers_TailsandSonic, what do I do with this? Branch it or what?
     
    Last edited by a moderator: Feb 4, 2014
  6. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    Obj01_Control:
    cmpa.w #MainCharacter,a0
    bne.s Obj01_Control_Joypad2
    tst.w (Debug_mode_flag).w ; is debug cheat enabled?
    beq.s + ; if not, branch
    btst #4,(Ctrl_1_Press).w ; is button B pressed?
    beq.s + ; if not, branch
    move.w #1,(Debug_placement_mode).w ; change Sonic into a ring/item
    clr.b (Control_Locked).w ; unlock control
    rts
    ; -----------------------------------------------------------------------
    + btst #3,status(a0) ; is Sonic standing on an object?
    beq.s + ; if no, branch
    bclr #7,status(a0) ; clear Jump Dash flag
    +
    tst.b (Control_Locked).w ; are controls locked?
    bne.s Obj01_Control_Part2 ; if yes, branch
    move.w (Ctrl_1).w,(Ctrl_1_Logical).w ; copy new held buttons, to enable joypad control
    bra.w Obj01_Control_Part2
    Obj01_Control_Joypad2:
    tst.b ($FFFFF7CF).w
    bne.s +
    move.w (Ctrl_2).w,(Ctrl_2_Logical).w
    +
    tst.w (Two_player_mode).w
    bne.s Obj01_Control_Part2
    jsr SonicCPU_Control

    Alright I saw from your last post about Tails and Sonic moving at the same time, here is a hint for that, (ok more like a give away).

    This will make it so if Sonic is not the main character, he will be reading from controller 2.

    Edit: This part Obj01_Control_joypad2.

    Edit2: So, how the game does it when Tails is not the main character.

    Edit3: Those two lines in the beginning are the flag check, and bne is if he is not the main character it will branch to the joypad control 2 and if it is, continue through the debug check, and than when it reaches; bra,w Obj01_contorl_part2, it will skip over the joypad2 control, making Sonic read from controller 1.

    Edit4: Ok I think you can take it from here.
     
    Last edited by a moderator: Feb 4, 2014
  7. JeffCharizardFlame

    JeffCharizardFlame Escape Reality and Play Video Games Member

    Joined:
    Jan 27, 2013
    Messages:
    37
    Location:
    United States
    Somewhat. This still doesn't tell me if I need to do some shifting or not. Because I'm still trying to figure this out. ^-^" While someone would think it's not really that hard, it is to me, at least formulating what to do next. I also tend not to experiment with results mainly because I've been told in my life that good and better aren't good enough. Unless I know what I'm getting into and can formulate something correctly, I tend not to do it.
     
Thread Status:
Not open for further replies.