News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Marcelo_20XX

Pages: [1]
ROM Hacking Discussion / N64 Majora's Mask auto skip textboxes
« on: December 15, 2020, 01:46:40 am »
Hi guys!
I hit a wall trying to find the conditional branch to NOP and enable autoskip textboxes. I found the games reads inputs at RDAM address: 803E6B3A then I set breakpoints on buttons A B and C-up (those are the ones that advance dialogue) but got stuck there, every BEQZ or BNEQZ noped after an ADDIU didnt work, any help is appreciated!!!

PD: I am using Project64 2.4 nightly's debugger

Programming / EVO Search for Eden running routine
« on: February 08, 2020, 08:11:02 pm »
Hi community! I am working on this SNES game, coding some custom gameplay tweaks, I had finished an auto scroll dialogue routine for a fast paced action. But I stumbled upon the second of my objectives: implementing a tweak that can assign running to a button input and disable the default double tap direction scheme since is not totally accurate gameplay wise (sometimes I end up running accidentally).

Ideally I want to map the running routine to the L button but I am having difficulties trying to figure out the best method for this, so I appreciate if anyone can help me here, thanks.

I found some addresses of interest:
Code: [Select]
000132  player state 88=neutral 89=stopping 8A=running
0005C3  stores if a Dpad key is being held down 00=false 08=true
0005A6  player facing value FF=null 40=right 80=down 00=up 20=left
000672  ?? sometimes stores player facing value
        not updated regularly
00068F  another copy of player facing value
001EB1  input polling i.e. 01=pressing right

$00/8D01 29 10       AND #$10  Check If Start Button is being pressed
                               useful routine to hijack and test our code


I had made a custom routine hijacking the Start Button being pressed routine:

Code: [Select]
$00/8D01 29 10       AND #$10                check only if Start button is being pressed
$00/8D03 F0 32       BEQ $32    [$8D37]      jump to 8D37 if not
I pressed Start so the routine continue:
$00/8D05 AD A6 05    LDA $05A6  [$00:05A6]   load ram address that store char facing value
$00/8D08 C9 FF       CMP #$FF                compare if not null
$00/8D0A D0 02       BNE $02    [$8D0E]      jump 2bytes if not null
$00/8D0C 80 29       BRA $29    [$8D37]      jump to end of default routine if null
$00/8D0E AD C3 05    LDA $05C3  [$00:05C3]   load ram that stores a Dpad key being held
$00/8D11 C9 08       CMP #$08                compare with values 00=false 08=true
$00/8D13 F0 02       BEQ $02    [$8D17]      jump 2bytes if true
$00/8D15 80 20       BRA $20    [$8D37]      jump to end of default routine if false
$00/8D17 A9 8A       LDA #$8A                load value 8A=running value
$00/8D19 8D 32 01    STA $0132  [$00:0132]   store at ram that sets player state out of 3
                                             possible values 88=neutral 89=stopping 8A=run
$00/8D1C 80 19       BRA $19    [$8D37]      jump to end of default routine
$00/8D37 22 93 8D 1E JSL $1E8D93[$1E:8D93]   default end as if Start has not being pressed

Still not perfect, there is some bugs with it, one is that after running on a direction if you press and maintain the opposite direction and then spam the Start button to trigger the routine, you will instead glitch the code and the character will pause for a moment when the button is being pressed, no idea why is that but ram address 068F that store the player facing value is being written with a 00 value that in normal cases shouldn't...

The other bug is that at the beginning of every level if you press and hold a direction and then press the start button it will trigger the bug above, to avoid this you need to at least tap any direction before using the custom routine...

I am working on a personal project to tweak some aspect of CV3 but I stumbled on this issue. I want to remove the Random dropping of subweapons from enemies, can someone shed some light on it, thank you!

ROM Hacking Discussion / My lists of SNES Romhacks
« on: June 15, 2018, 01:46:56 am »
Hi community,
I want to share some projects I recently started working for the SNES console, most of them are complete but I will be posting WIPs too, so be sure to check out frequently if you are interested...

I recently learned some 65c816 assembly so I will share in many cases both, the IPS and my personal notes, also be sure to give feedback because I am still learning so I am no expert and ultimately want to learn how to get rid of the HUD drawing routines on most of these games...

Without a further ado here are there:
Tiny Toon Adventures - Buster Busts Loose! list of changes:
1) Disabled Bonus after completing a level
2) Partially disabled Chapter Intros (you can make them show again if you hold B button after beating a Stage)
3) Auto Text faster scroll
4) Mini Rope game set to only 3 jumps
5) You start with 1 live
6) You start with no continues
7) Always have best ending regardless of difficulty setting

Related Assembly Notes:

PC address 25F3:
5C 7A FF 80      JMP $80FF7A    //Jump to custom routine*

PC address 7F7A:
64 94
E6 68            INC $68        //* Increment Level Counter by 1
A5 68            LDA $68        //Load Level Counter
C9 06 00         CMP #$0006     //Compare to Final Stage value (0006)
F0 14            BEQ $14        //Skip 20 bytes if equal to 0006 **
A5 8E            LDA $8E        //Load Lives Counter
8D 0E 1A         STA $1A0E      //Store current lives in temp RAM address 7E:1A0E for using it later
A5 26            LDA $26        //Button register
29 80 80         AND #$8080     //Ignore all inputs and check if B IS NOT being held
F0 04            BEQ $04        //Skip 4 bytes if true***
22 B1 85 80      JSL $8085B1    //Jump to cutscene routine
5C 42 A6 80      JMP $80A642    //***Jump to Continue Stage routine and continue from there
Enable always best ending:
A9 02 00         LDA #0002      //**Load value 2 must be 16 bits since we are storing to a DP Direct Page
85 6C            STA $6C        //Store value in RAM area 7E:006C
5C F7 A5 80      JMP $80A5F7    //Go back and continue from there
PC address 7F7A:
AD 0E 1A         LDA $1A0E      //Load RAM area 7E:1A0E
85 8E            STA $8E        //Restore previous lives to main counter RAM address (7E:008E)
Enable Fast text scroll:
79A4:   F0 03 to EA EA
7C6E:   D0 06 to 80 06
Set Rope Mini Game to 3:
1AEE9: 0A to 03
Start with 1 Live:
518: 03 to 01
Disable Continues:
800B: FF 05 03 to 00 00 00

IPS Patch Download links: Tiny Toon Adventures - Buster Busts Loose! (USA)

That's all folks, please stay tuned, more coming soon...

ROM Hacking Discussion / Rondo of Blood Audio tracks editing
« on: March 30, 2013, 01:58:30 am »
I was trying to do a simple edit to this game but now I got stuck at replacing the audio tracks. I ripped the Audio tracks from my PSP Dracula X Chronicles and tried to replace the original audio tracks of my ISO-Wav's Rondo of Blood with the PSP equivalent. The problem is that the audio tracks don't match in length so whenever a track is played I hear a few seconds of another track before playing the actual wav.

The thing I need to know is, giving the following TOC:

  - track  6 [00]: 07 37 09 (  34134,   40411)
  - track  7 [00]: 09 00 61 (  40411,   45275)
  - track  8 [00]: 10 05 34 (  45275,   58622)
  - track  9 [00]: 13 03 58 (  58622,   66400)

How can I force Magic Engine to read the track 8 from 45275 until 58622

The emulator keep reading the track from 45260 until 58635, like this:
cd play: start=45260 pos=45260 offset=0 stop=58635 mode=1

Any help or suggestions? thanks!!!

Pages: [1]