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.


Messages - slidelljohn

Pages: [1] 2 3 4 5 6 ... 15
1
ROM Hacking Discussion / Re: Wip projects for the 7th saga (Snes)
« on: January 11, 2021, 02:27:50 pm »
Sorry for disappearing, I have been really busy.

I have made some modifications to elnard to load english text.
I had to transfer some asm and text compression table files from 7th saga to elnard to
get it to load 7th saga's english text. Here is a video showing the english text loading
in elnard.
https://www.mediafire.com/file/it84wb15qqyu650/elnard_english.mp4/file

Its probably not going to be completed for some time but hopefully sometime this year
we will have elnard in english. There will probably be 2 versions, one having the
japanese text translated to english and another using 7th saga's text.

@NARFNra
I need to make a tool for the text and I'm not sure when I'll have that ready but hopefully
you will still be willing to do the translation when I finish creating the tool for it.

@Sanedan56
I'm not sure if I need them or not but I'll definitely take a look at them if you want to share.

@DragonAtma
Nice work my friend! Glad to see you on here! If you are interested in working on new enemies
I can make a tool to not only add new gfx but I can also edit animations and AI scripts. I have all
enemy data and asm documented.

2
So if I'm reading this right, the patch skips over that code. Adding an A press -should- be as simple as splicing in that code then, if the right location is found.
Yes, skips over the code because the code was removed.

And also yes, as long as the right location is found. I pretty much found the location I just need to test it out and see if it’s actually possible to insert the data there. Hopefully it’s compatible. I’m not sure when I’ll get back to this, it’s probably going to be a couple of weeks unfortunately.

3
Awesome!! Thanks!!! :beer:

4
ROM Hacking Discussion / Re: Wip projects for the 7th saga (Snes)
« on: December 09, 2020, 12:36:31 am »
@4ph
Thanks 4ph! That link to the dump should definitely help.  :beer:

Will we be mostly communicating through this thread?
Yes, this thread will work unless you prefer another way to communicate. Unfortunately my message box is full and the messages that I currently have I don’t want to delete. I wish we could have more messages that we can store in our inboxes.
What I’m going to do is start looking at the asm and the data for the text and I’ll see if I can create a text editor in c++.  I’m not sure if you have seen my different books/items that I have for elnard that I posted in this thread but I also have that elnard guide book. Not only do I have that book but I have 2 of those same guide books. The second book(y’all don’t kill me) I cut all of the pages out so I could create perfect scans of each page so I could one day get it translated. I want to create a translated hd version of the book. I haven’t scanned all of the pages yet but I might do that next year.


5
ROM Hacking Discussion / Re: Wip projects for the 7th saga (Snes)
« on: December 08, 2020, 11:29:02 am »
I’m definitely interested in doing this and I can start later tonight. 7th saga is the only reason i started programming and I have many plans for it.

6
Yea, the tool I made was something like IPS Peek but IPS Peek looks a lot better. The tool I made just dumped everything to a text file. I never even knew about IPS Peek. I’m probably going to test that tool out next time I need to dig into a IPS file.

7
The 0x00 to 0x80 and ORA 80 to the bank number are for fast rom access. If there are so many
problems with the patch it might best to start a new fast rom patch from scratch. If you do
want to go through the code that was modified I have a IPS patch to text tool somewhere that you
can use that would probably help you with that. It would show all modifications that were made.

8
If the fastrom patch is causing that many problems it might be a good idea to create a
new fastrom patch. You just need to get asm dissembled to make it easy to create. I wont
really have time to help with that though.

I created a patch that removes the A-Button press for the text after the HAL screen.

http://www.mediafire.com/file/fhaj2rnmyqhcx11/Arcana_%2528U%2529_removed_A-Button_press_1st_group_of_text_after_HAL_screen.ips/file

Here is the data for the sub-language before the tile screen.
Code: [Select]
$17:804D 24 00

$17:804F 11 02 55 80 8D 82 // 55 80 = return to $17:8055, 8D 82 = ???

$17:8055 1B 8E 91 // = HAL opening screen

$17:8058 07 77 81 00

$17:805C 07 69 9D 00 01

$17:8061 07 93 9D 00 00 00 60 00

$17:8069 07 6F 9D 00 02 00 00 50 00 0C

$17:8073 07 B6 9D 00 1F

$17:8078 07 A8 9D 00 14

$17:807D 07 40 A1 00 F0 8F 17 00 08 00

$17:8087 07 97 A0 00 24 81 17 00

$17:808F 07 97 A0 00 73 90 17 01

$17:8097 07 F9 9C 00 4F 8A 01

$17:809E 07 A8 A0 00 

$17:80A2 07 CC D4 18 29 81 17 00

$17:80AA 06 05

$17:80AC 07 F9 9C 00 1B 81 17

$17:80B3 16 22 05 00 00

$17:80B8 38 C8 00

$17:80BB 40 A0 00

$17:80BE 30 01

$17:80C0 0F 00 01 00

$17:80C4 06 01

$17:80C6 07 8B 81 00

$17:80CA 01 10

$17:80CC 07 CB A0 00 //screen dimmer-increase, before 1st group of text

$17:80D0 06 01

$17:80D2 02

$17:80D3 09 6D 82 17 //A-Button press, 8D 82 = Arcana title screen

$17:80D7 07 CC D4 18 2B 81 17 00

$17:80DF 07 51 A0 00 91 10 FF 00 //stops here on 1st set text ???

$17:80E7 30 FF

$17:80E9 0F 00 FF FF

$17:80ED 07 CC D4 18 2B 82 17 00

$17:80F5 07 51 A0 00 91 10 FF 00

$17:80FD 06 F0

$17:80FF 07 83 82 17

$17:8103 01 10

$17:8105 07 DB A0 00 //screen dimmer-decrease, after 1st group of text

$17:8109 06 04

$17:810B 02
 
$17:810C 31 FF

$17:810E 07 CC D4 18 29 81 17 00

$17:8116 06 05

$17:8118 1A 8D 82 //8D 82 = Arcana title screen

To create the patch:

1. I copied all $17:804D-$17:811A data to $17:FF00

2. $00:A212  4D 80, was change to $00:A212  00 FF

3. $17:804F 11 02 55 80 8D 82, changed to $17:804F 11 02 08 FF 8D 82
   but this was for the copied data at the $17:FF00 ($17:FF04 80 8D)

4. Removed data at $17:80D3 09 6D 82 17 //A-Button press, 8D 82 = Arcana title screen
   but this was for the copied data at the $17:FF00 ($17:FF86 09 6D 82 17)



9
If you have a patch for the one you're using I can see why its not working
correctly for that one.

I haven't really been able to look at some more stuff for creating a button press event
for the intro but I did find a couple other things that will help.

Change this:
$00:A212 4D 80

To this:
$00:A212 58 80

It will skip the HAL intro. Next I'll see if I can decode the sub-code for the screen that does
load in HAL's place. It has a A-Button press to skip it and I should hopefully be able to implement
that code for the intro that you would like to add the A-Button press to, to skip it.

11
ROM Hacking Discussion / Re: What other websites should I be monitoring?
« on: November 17, 2020, 01:22:09 am »
Edit: if people want, I'll keep this post updated with new submissions.
This is a good idea.  :beer:

You can add this to the list if you want some PlayStation stuff.
http://www.psxdev.net/

12
Yea, I'll definitely still help you out with this but I might not have time for a
couple of days.

The is all I changed to start at 1st level instead of it starting the intro then the 1st level.


I do have a idea of moving the sub language code that starts at $17:831b and move it to another
location and just add in the b-button sub language code but Ill need to run some tests. I might
be able to run some tests on it tomorrow night but its probably not going to be until Wednesday
night until I can work on it.


13
Could the infinite loop just be waiting for a interrupt?

I see what looks like infinite loops all of the time in snes code and they exit the loop when a interrupt occurs.

14
"Wow you found that fast for no experience!"
I'm not familiar with Arcana's asm code but I do have snes coding experience. :happy:

I made it to where you can skip the intro when starting a new game.
Here is what I did:

Code: [Select]
change this
$17/83FB A9 1B 83    LDA #$831B
$17/83FE A0 17 00    LDY #$0017

to this
$17/83FB A9 89 8f    LDA #$8f89
$17/83FE A0 17 00    LDY #$0017

[$17:831b = start game to intro]
[$17:8F89 = start game to 1st level]

I know this isn't exactly what you want but it should help out to get a idea of what you need to do.
I could try to help you out a little more if you would like me to but I will need a save state just before
"There's a scene in Arcana where you can press A to cancel the animation early, when traveling between towns".

I can try tracing the code and see if I can mimic this code in the intro to skip it for the A-Button press.
The snes debugger that I like to use is [Snes9X v1.43.ep9r8 - Geiger's Snes9x Debugger] so if you can post a save
state for that debugger that would be great.

Also it looks like $7e:18CD is the current level.

November 14, 2020, 02:32:51 am - (Auto Merged - Double Posts are not allowed before 7 days.)
Here is something else that you might find interesting.

$17:8F71 89 8f //pointer to [$17:8F89 = start game to 1st level]

change this
$17:8F71 89 8f

to this
$17:8F71 1b 83

This will make the intro start a second time after the intro is finished
and when the second intro is finished it looks like you get the ending credits.

15
part of closing screen
Code: [Select]
$00/903A 80 15       BRA $15    [$9051]      A:866B X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:eNvmxdIzcHC:0846 VC:237 00 FL:01
$00/9051 AE 41 10    LDX $1041  [$00:1041]   A:866B X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:eNvmxdIzcHC:0868 VC:237 00 FL:01
$00/9054 BD 9F 0B    LDA $0B9F,x[$00:0B9F]   A:866B X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:envmxdIZcHC:0908 VC:237 00 FL:01
$00/9057 F0 D2       BEQ $D2    [$902B]      A:0000 X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:envmxdIZcHC:0948 VC:237 00 FL:01
$00/902B A7 10       LDA [$10]  [$17:866B]   //sets function for function loader
$00/902D 29 FF 00    AND #$00FF              A:DB07 X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:eNvmxdIzcHC:1050 VC:237 00 FL:01
$00/9030 C9 30 00    CMP #$0030              A:0007 X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:envmxdIzcHC:1074 VC:237 00 FL:01
$00/9033 B0 07       BCS $07    [$903C]      A:0007 X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:eNvmxdIzcHC:1098 VC:237 00 FL:01
$00/9035 0A          ASL A                   A:0007 X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:eNvmxdIzcHC:1114 VC:237 00 FL:01
$00/9036 AA          TAX                     A:000E X:0000 Y:0000 D:1E00 DB:00 S:1FF5 P:envmxdIzcHC:1128 VC:237 00 FL:01
$00/9037 FC 67 90    JSR ($9067,x)[$00:9527] //function loader for open close plus others

$00/9527 E6 10       INC $10    [$00:1E10]   A:000E X:000E Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:1204 VC:237 00 FL:02
$00/9529 A7 10       LDA [$10]  [$17:866C]   //pointer for JML $A0DB
$00/952B 8D 49 10    STA $1049  [$00:1049]   A:A0DB X:000E Y:0000 D:1E00 DB:00 S:1FF3 P:eNvmxdIzcHC:1338 VC:237 00 FL:02
$00/952E E6 10       INC $10    [$00:1E10]   A:A0DB X:000E Y:0000 D:1E00 DB:00 S:1FF3 P:eNvmxdIzcHC:0010 VC:238 00 FL:02
$00/9530 E6 10       INC $10    [$00:1E10]   A:A0DB X:000E Y:0000 D:1E00 DB:00 S:1FF3 P:eNvmxdIzcHC:0064 VC:238 00 FL:02
$00/9532 A7 10       LDA [$10]  [$17:866E]   A:A0DB X:000E Y:0000 D:1E00 DB:00 S:1FF3 P:eNvmxdIzcHC:0142 VC:238 00 FL:02
$00/9534 29 FF 00    AND #$00FF              A:0600 X:000E Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:0198 VC:238 00 FL:02
$00/9537 8D 4B 10    STA $104B  [$00:104B]   A:0000 X:000E Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIZcHC:0222 VC:238 00 FL:02
$00/953A AE 41 10    LDX $1041  [$00:1041]   A:0000 X:000E Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIZcHC:0262 VC:238 00 FL:02
$00/953D BD B3 0C    LDA $0CB3,x[$00:0CB3]   A:0000 X:0000 Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIZcHC:0302 VC:238 00 FL:02
$00/9540 22 0E 9B 00 JSL $009B0E[$00:9B0E]   A:000E X:0000 Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:0342 VC:238 00 FL:02

$00/9B0E DC 49 10    JML [$1049][$00:A0DB]   //JML $A0DB
$00/A0DB AD 42 00    LDA $0042  [$00:0042]   //start of close screen function
$00/A0DE 29 FF 00    AND #$00FF              A:030E X:0000 Y:0000 D:1E00 DB:00 S:1FF0 P:envmxdIzcHC:0498 VC:238 00 FL:03
$00/A0E1 F0 04       BEQ $04    [$A0E7]      A:000E X:0000 Y:0000 D:1E00 DB:00 S:1FF0 P:envmxdIzcHC:0522 VC:238 00 FL:03
$00/A0E3 3A          DEC A                   A:000E X:0000 Y:0000 D:1E00 DB:00 S:1FF0 P:envmxdIzcHC:0538 VC:238 00 FL:03
$00/A0E4 20 27 83    JSR $8327  [$00:8327]   A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FF0 P:envmxdIzcHC:0552 VC:238 00 FL:03

$00/8327 E2 20       SEP #$20                A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FEE P:envmxdIzcHC:0598 VC:238 00 FL:04
$00/8329 8D 42 00    STA $0042  [$00:0042]   A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FEE P:envMxdIzcHC:0620 VC:238 00 FL:04
$00/832C 8D 41 00    STA $0041  [$00:0041]   A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FEE P:envMxdIzcHC:0652 VC:238 00 FL:04
$00/832F 8D 00 21    STA $2100  [$00:2100]   //screen display register
$00/8332 C2 20       REP #$20                A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FEE P:envMxdIzcHC:0714 VC:238 00 FL:04
$00/8334 60          RTS                     A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FEE P:envmxdIzcHC:0736 VC:238 00 FL:04

$00/A0E7 6B          RTL                     A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FF0 P:envmxdIzcHC:0778 VC:238 00 FL:03

$00/9544 AE 41 10    LDX $1041  [$00:1041]   A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:0822 VC:238 00 FL:02
$00/9547 9D B3 0C    STA $0CB3,x[$00:0CB3]   A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIZcHC:0862 VC:238 00 FL:02
$00/954A E6 10       INC $10    [$00:1E10]   A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FF3 P:envmxdIZcHC:0902 VC:238 00 FL:02
$00/954C 60          RTS                     A:000D X:0000 Y:0000 D:1E00 DB:00 S:1FF3 P:eNvmxdIzcHC:0956 VC:238 00 FL:02

part of open screen
Code: [Select]
open

$00/903A 80 15       BRA $15    [$9051]      A:0080 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:eNvmxdIzcHC:0484 VC:076 00 FL:03
$00/9051 AE 41 10    LDX $1041  [$00:1041]   A:0080 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:eNvmxdIzcHC:0506 VC:076 00 FL:03
$00/9054 BD 9F 0B    LDA $0B9F,x[$00:0B9F]   A:0080 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:envmxdIZcHC:0546 VC:076 00 FL:03
$00/9057 F0 D2       BEQ $D2    [$902B]      A:0000 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:envmxdIZcHC:0586 VC:076 00 FL:03
$00/902B A7 10       LDA [$10]  [$17:8F8D]   A:0000 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:envmxdIZcHC:0632 VC:076 00 FL:03
$00/902D 29 FF 00    AND #$00FF              A:6907 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:envmxdIzcHC:0688 VC:076 00 FL:03
$00/9030 C9 30 00    CMP #$0030              A:0007 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:envmxdIzcHC:0712 VC:076 00 FL:03
$00/9033 B0 07       BCS $07    [$903C]      A:0007 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:eNvmxdIzcHC:0736 VC:076 00 FL:03
$00/9035 0A          ASL A                   A:0007 X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:eNvmxdIzcHC:0752 VC:076 00 FL:03
$00/9036 AA          TAX                     A:000E X:0000 Y:0005 D:1E00 DB:00 S:1FF8 P:envmxdIzcHC:0766 VC:076 00 FL:03
$00/9037 FC 67 90    JSR ($9067,x)[$00:9527] //function loader for open close plus others

$00/9527 E6 10       INC $10    [$00:1E10]   A:000E X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIzcHC:0842 VC:076 00 FL:04
$00/9529 A7 10       LDA [$10]  [$17:8F8E]   A:000E X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:eNvmxdIzcHC:0920 VC:076 00 FL:04
$00/952B 8D 49 10    STA $1049  [$00:1049]   A:9D69 X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:eNvmxdIzcHC:0976 VC:076 00 FL:04
$00/952E E6 10       INC $10    [$00:1E10]   A:9D69 X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:eNvmxdIzcHC:1016 VC:076 00 FL:04
$00/9530 E6 10       INC $10    [$00:1E10]   A:9D69 X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:eNvmxdIzcHC:1070 VC:076 00 FL:04
$00/9532 A7 10       LDA [$10]  [$17:8F90]   A:9D69 X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:eNvmxdIzcHC:1148 VC:076 00 FL:04
$00/9534 29 FF 00    AND #$00FF              A:0100 X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIzcHC:1204 VC:076 00 FL:04
$00/9537 8D 4B 10    STA $104B  [$00:104B]   A:0000 X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIZcHC:1228 VC:076 00 FL:04
$00/953A AE 41 10    LDX $1041  [$00:1041]   A:0000 X:000E Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIZcHC:1268 VC:076 00 FL:04
$00/953D BD B3 0C    LDA $0CB3,x[$00:0CB3]   A:0000 X:0000 Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIZcHC:1308 VC:076 00 FL:04
$00/9540 22 0E 9B 00 JSL $009B0E[$00:9B0E]   A:0080 X:0000 Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIzcHC:1348 VC:076 00 FL:04

$00/9B0E DC 49 10    JML [$1049][$00:9D69]   A:0080 X:0000 Y:0005 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:0036 VC:077 00 FL:05
$00/9D69 20 F0 9A    JSR $9AF0  [$00:9AF0]   A:0080 X:0000 Y:0005 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:0096 VC:077 00 FL:05

$00/9AF0 E6 10       INC $10    [$00:1E10]   A:0080 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envmxdIzcHC:0142 VC:077 00 FL:06
$00/9AF2 A7 10       LDA [$10]  [$17:8F91]   A:0080 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:eNvmxdIzcHC:0220 VC:077 00 FL:06
$00/9AF4 29 FF 00    AND #$00FF              A:0701 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envmxdIzcHC:0276 VC:077 00 FL:06
$00/9AF7 60          RTS                     A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envmxdIzcHC:0300 VC:077 00 FL:06

$00/9D6C 4C BB 81    JMP $81BB  [$00:81BB]   A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:0342 VC:077 00 FL:05
$00/81BB 20 BF 81    JSR $81BF  [$00:81BF]   A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:0366 VC:077 00 FL:05

$00/81BF E2 20       SEP #$20                A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envmxdIzcHC:0412 VC:077 00 FL:06
$00/81C1 EB          XBA                     A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envMxdIzcHC:0434 VC:077 00 FL:06
$00/81C2 AD 44 00    LDA $0044  [$00:0044]   A:0100 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envMxdIZcHC:0454 VC:077 00 FL:06
$00/81C5 29 F0       AND #$F0                A:0101 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envMxdIzcHC:0486 VC:077 00 FL:06
$00/81C7 8D 44 00    STA $0044  [$00:0044]   A:0100 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envMxdIZcHC:0502 VC:077 00 FL:06
$00/81CA EB          XBA                     A:0100 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envMxdIZcHC:0534 VC:077 00 FL:06
$00/81CB 0D 44 00    ORA $0044  [$00:0044]   A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envMxdIzcHC:0554 VC:077 00 FL:06
$00/81CE 8D 44 00    STA $0044  [$00:0044]   A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envMxdIzcHC:0586 VC:077 00 FL:06
$00/81D1 8D 05 21    STA $2105  [$00:2105]   //bg mode
$00/81D4 C2 20       REP #$20                A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envMxdIzcHC:0648 VC:077 00 FL:06
$00/81D6 60          RTS                     A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF1 P:envmxdIzcHC:0670 VC:077 00 FL:06

$00/81BE 6B          RTL                     A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF3 P:envmxdIzcHC:0712 VC:077 00 FL:05

$00/9544 AE 41 10    LDX $1041  [$00:1041]   A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIzcHC:0756 VC:077 00 FL:04
$00/9547 9D B3 0C    STA $0CB3,x[$00:0CB3]   A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIZcHC:0796 VC:077 00 FL:04
$00/954A E6 10       INC $10    [$00:1E10]   A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF6 P:envmxdIZcHC:0836 VC:077 00 FL:04
$00/954C 60          RTS                     A:0001 X:0000 Y:0005 D:1E00 DB:00 S:1FF6 P:eNvmxdIzcHC:0890 VC:077 00 FL:04

close screen function loader bytes
$17:866B //close
07 DB A0 00 06

There are a bunch of these 5 byte tables. Ill look up some more later for you.

16
What I would probably try to do is find the screen close();
function so when you press the button that you want to skip the intro it will start the close screen event. This is probably going to use the Screen Display register $2100. The bits 3-0 in the $2100 register will probably count down from 0xf to 0x0 to close the screen.

The other thing you would want to try and find is the screen open(); function so you can open the screen that starts the game. This function will probably use the BGMODE register $2105 to set the bg mode. If the screen open function doesn’t set the bg mode(which I would think it would) I would try to find when the gfx for the background gets Dma’d to vram and trace back from there to see if you can find the start of the screen load function.

If I have time later tonight I might try to take a look at it if you don’t find those functions by then. Although I have never played the game before I think this is a good idea and it is something that’s definitely possible to do. It will probably take some time to figure it out but it would be worth it.

17
7e:0021 and 7e:0022 are the button presses in ram. The easiest way to find button presses for me is to just look at the ram when you
press buttons and see what values are changing or not.

This looks like a button press value loading from ram.
$00/83AA B5 21       LDA $21,x  [$00:0021]

7e:0025 and 7e:0026 also look like button presses because they seem to be storing the same values
when you press buttons.

Here is also some code grabing button press from register and storing to ram:

Code: [Select]
$00/83A2 BD 18 42    LDA $4218,x[$00:4218]   A:0000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:envmxdIZCHC:0566 VC:236 00 FL:16
$00/83A5 29 F0 FF    AND #$FFF0              A:8000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:eNvmxdIzCHC:0602 VC:236 00 FL:16
$00/83A8 85 00       STA $00    [$00:0000]   A:8000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:eNvmxdIzCHC:0626 VC:236 00 FL:16
$00/83AA B5 21       LDA $21,x  [$00:0021]   A:8000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:eNvmxdIzCHC:0658 VC:236 00 FL:16
$00/83AC 49 FF FF    EOR #$FFFF              A:0000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:envmxdIZCHC:0696 VC:236 00 FL:16
$00/83AF 25 00       AND $00    [$00:0000]   A:FFFF X:0000 Y:0003 D:0000 DB:00 S:1FEA P:eNvmxdIzCHC:0720 VC:236 00 FL:16
$00/83B1 95 31       STA $31,x  [$00:0031]   A:8000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:eNvmxdIzCHC:0752 VC:236 00 FL:16
$00/83B3 A5 00       LDA $00    [$00:0000]   A:8000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:eNvmxdIzCHC:0790 VC:236 00 FL:16
$00/83B5 D5 21       CMP $21,x  [$00:0021]   A:8000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:eNvmxdIzCHC:0822 VC:236 00 FL:16
$00/83B7 95 21       STA $21,x  [$00:0021]   A:8000 X:0000 Y:0003 D:0000 DB:00 S:1FEA P:eNvmxdIzCHC:0860 VC:236 00 FL:16

I believe this is a B-button press.

Also $00:0000 and $00:0001 are the button presses. Looks like its going to be fun digging through these. :laugh:

18
I don't know if the dos version uses the same compression.

20
The exact format is:

1st 2 bytes is decompressed file size

Then 1 byte for 8 compression bit flags 76543210

bit flags are read one at a time starting at 0 then 1...7

if bit flag = 0 use a sliding window that has a size of no less than 3 and no more than 18
if bit flag = 1 load a non-compressed byte from file(this is what I used for the 1st test compressor which is why file was larger)

xx yx sliding window is 2 bytes in size xx is low byte yx is high byte

switch these to yx xx

x xx is the location that the sliding window starts

y is the size of the sliding window

if y = 0x0, sliding window has a size of 3
if y = 0xf, sliding window has a size of 18

Here is a example of the compressed gfx at $84:B727:

00 04 //size
FD    //compression flags, 0xfd = 1111 1101, read flags from right to left
FF    //bit flag = 1, store non-compressed byte from file
00 C0 //bit flag = 0, use sliding window, 00 = low c0 = high, switch to c0 00, 0x000 is window starting location, 0xc + 3 = size of window
3F    //bit flag = 1, store non-compressed byte from file
00    //bit flag = 1, store non-compressed byte from file
60    //bit flag = 1, store non-compressed byte from file
1F    //bit flag = 1, store non-compressed byte from file
5F    //bit flag = 1, store non-compressed byte from file
BF    //bit flag = 1, store non-compressed byte from file

This is the decompressed data:
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
3F 00 60 1F 5F BF

If 0x1000 bytes are stored 7e:4000-7e:4fff then dma those bytes to vram and then finish decompressing
start back over at 7e:4000.


So I was able to create the compressor with the sliding window that creates the same
exact compression size but some of the sliding window location are different. The ones that
are different are the ones that find multiple matches of the same values.

Here is a example of $84:B727 decompressed:
Code: [Select]
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
3F 00 60 1F 5F BF 7F BF 7F BF 7F BF 7F BF 7F BF
FF 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF
F8 00 04 F8 F2 FC FA FC FA FC FA FC FA FC FA FC
7F BF 7F BF 7F BF 7F BF 7F BF 7F BF 7F BF 7F BF
FA FC FA FC FA FC FA FC FA FC FA FC FA FC FA FC
7F BF 7F BF 7F BF 7F BF 5F BF 2F DF 1F 60 00 3F
FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 FF
FA FC FA FC FA FC FA FC FA FC F4 FA F8 04 00 F8
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
7C 83 C6 39 DE 39 DE 39 DE 39 DE 39 7C 83 01 FF
DB E7 FB C7 DB E7 FB E7 FB E7 FB E7 FD C3 C1 FF
7C 83 C6 39 1E F9 BC C3 60 9F DE 39 FE 01 00 FF
7C 83 C6 39 3E F9 FC C3 C6 F9 FE 39 7C 83 00 FF
FD E3 FD C3 ED 93 CD 33 FE 01 0C F3 FE E1 E0 FF
FE 01 C0 3F FC 03 06 F9 FE F9 FE 39 7C 83 00 FF
7C 83 C6 39 D8 3F FC 03 C6 39 DE 39 7C 83 00 FF
FE 01 C6 39 2C F3 D9 E7 F7 CF F7 CF FB 87 83 FF
7C 83 C6 39 DE 39 7C 83 C6 39 DE 39 7C 83 00 FF
7C 83 C6 39 DE 39 7E 81 06 F9 DE 39 7C 83 01 FF
FF FF F7 CF F7 CF C7 FF F7 CF F7 CF C7 FF FF FF
FF FF FF FF F7 CF C7 FF F7 CF F7 CF D7 EF E7 DF
F7 CF F7 CF F7 CF F7 CF C7 FF F7 CF F7 CF C7 FF
F7 CF F7 CF D7 EF E7 DF CF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF F7 CF F7 CF D7 EF E7 DF
79 87 8D 73 3D F3 D9 E7 F3 CF C7 FF F7 CF C7 FF
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
FF C7 FB C7 AB D7 ED 93 7D 83 C6 39 DE 39 18 FF
FD 03 66 99 EE 99 FC 83 E6 99 EE 99 FC 03 00 FF
FD 83 C6 39 D8 3F DF 3F DF 3F DE 39 7C 83 81 FF
FF 03 67 99 EE 99 EE 99 EE 99 EE 99 FD 03 03 FF
FE 01 62 9D EC 9F FB 87 E3 9F EE 9D FE 01 00 FF
FE 01 62 9D EC 9F FB 87 E3 9F EF 9F F7 0F 07 FF
FD 83 C6 39 D8 3F DE 31 D6 39 DE 39 7D 83 83 FF
DE 39 DE 39 DE 39 FE 01 C6 39 DE 39 DE 39 18 FF
FD C3 D9 E7 FB E7 FB E7 FB E7 FB E7 FD C3 C1 FF
FE E1 EC F3 FD F3 FD F3 FD 33 FD 33 7B 87 87 FF
E6 19 6D 93 FB 87 F7 8F FB 87 ED 93 E6 19 00 FF
F7 0F 67 9F EF 9F EF 9F EF 9F EE 9D FE 01 00 FF
C6 39 EE 11 FE 01 D6 29 D6 29 C6 39 DE 39 18 FF
EE 19 EE 19 F6 09 DE 21 CE 31 CE 31 D6 39 10 FF
FD 83 C6 39 DE 39 DE 39 DE 39 D6 39 7D 83 83 FF
FC 03 66 99 EE 99 FC 83 E0 9F EF 9F F7 0F 07 FF
FD 83 C6 39 DE 39 DE 39 D6 29 CE 31 FD 83 86 F9
FC 03 66 99 EE 99 FC 83 E6 99 EE 99 EE 19 08 FF
7D 83 C6 39 DC 3F 7C 83 06 F9 DE 39 7C 83 80 FF
FE 01 B2 4D 30 CF F3 CF F3 CF F3 CF F9 87 81 FF
EE 19 6E 99 EE 99 EE 99 EE 99 EE 99 BC C3 80 FF
DE 39 DE 39 5C BB 6D 93 ED 93 A9 D7 BB C7 C3 FF
D6 29 D6 29 D6 29 FE 01 EE 11 C6 39 D6 39 38 FF
DE 39 C6 39 6D 93 B9 C7 ED 93 C6 39 D6 39 18 FF
DE 39 C6 39 6D 93 B9 C7 F3 CF F3 CF F9 87 81 FF
FE 01 8C 73 39 E7 F3 CF E7 9F CE 3D FE 01 00 FF
FB E7 F3 CF F7 CF F7 CF F7 CF F7 CF DB E7 C3 FF
FF 3F 7F 9F BF CF DF E7 EF F3 F6 F9 FA FD FC FF
F3 CF DB E7 FB E7 FB E7 FB E7 FB E7 F3 CF C3 FF
FF FF FF FF FF FF FF FF FF FF FB E7 FB E7 E3 FF
FF FF FF FF FF FF FB 87 FB 87 83 FF FF FF FF FF

compressed gfx $84:B727 from rom:
Code: [Select]
00 04 FD FF 00 C0 3F 00 60 1F 5F BF F5 7F 15 60
FF FE CF F8 00 04 F8 07 F2 FC FA 35 60 16 70 16
30 36 70 3A B0 FF 5F BF 2F DF 1F 60 00 3F F8 00
A0 FE 0F 56 70 F4 FA F8 04 00 01 F8 00 D0 9F F0
B1 F0 C3 F0 D5 F0 E7 F0 00 30 DF 7C 83 C6 39 DE
03 41 7C 83 3F 01 FF DB E7 FB C7 10 01 15 21 F7
FD C3 C1 FF 20 1E F9 BC C3 7F 60 9F DE 39 FE 01
00 FF 20 7F 3E F9 FC C3 C6 F9 FE 0B 01 FF 00 FF
FD E3 FD C3 ED 93 FF CD 33 FE 01 0C F3 FE E1 FF
E0 FF FE 01 C0 3F FC 03 27 06 F9 FE 39 41 00 11
D8 53 01 02 11 FE 3C 11 FE 01 C6 39 2C F3 D9 FF
E7 F7 CF F7 CF FB 87 83 F8 FF 40 80 51 2E 31 DE
39 7E 81 06 2D F9 0A 31 FF FF 78 11 C7 A1 41 00
30 1E A4 51 D7 EF E7 DF 78 11 A2 91 B8 51 F9 CF
00 C0 B8 51 79 87 8D 73 3D CA 75 01 F3 A5 21 C7
20 00 F2 CF C7 FB BF C7 AB D7 ED 93 7D 01 21 18
FF FF FD 03 66 99 EE 99 FC 4B 83 E6 23 12 03 3E
01 61 21 DF 35 02 3E 0A 11 81 FF FF 03 67 23 02
44 32 F7 FD 03 03 4F 01 62 9D EC 9F 3F FB 87 E3
9F EE 9D 2C 11 50 72 DF EF 9F F7 0F 07 2F 42 DE
31 3D D6 03 01 7D 83 83 FF 04 31 70 11 CC 04 11
1E 02 C3 D9 15 41 1A 31 FE E1 F7 EC F3 FD A3 12
33 FD 33 7B FF 87 87 FF E6 19 6D 93 FB FF 87 F7
8F FB 87 ED 93 E6 3F 19 00 FF F7 0F 67 69 02 C4
12 FE 5A 32 C6 39 EE 11 FE 01 D6 F7 29 D6 29 1A
32 EE 19 EE 19 7F F6 09 DE 21 CE 31 CE 77 02 A9
10 2F 22 04 31 D6 7B 22 FC 21 42 E0 FC 69 82 F6
22 29 CE 31 FD 83 86 79 F9 00 53 28 12 EE 19 08
FF 18 12 AF DC 3F 7C 83 98 31 80 4F 01 B2 EF 4D
30 CF F3 45 23 F9 87 81 BA DF 02 6E 43 62 BC C3
80 7F 22 5C FF BB 6D 93 ED 93 A9 D7 BB F7 C7 C3
FF D6 12 D6 29 FE 01 D7 EE 11 C6 F9 02 38 7F 02
C6 39 BF 6D 93 B9 C7 ED 93 7A 13 18 7C 7F 63 48
53 FE 01 8C 73 39 F7 01 2F E7 9F CE 3D 2C 11 FB
F7 01 C0 51 F7 DB E7 C3 0E 00 7F 9F BF CF FF DF
E7 EF F3 F6 F9 FA FD 67 FC FF F3 BB 03 94 52 F3
CF BE 03 14 00 60 16 11 E3 E3 53 87 7C 11 79 10

compressed gfx $84:B727 from tool that I posted below:
http://www.mediafire.com/file/x3i0nc0y92pgedd/BlackthorneCompressorTest2.rar/file
Code: [Select]
00 04 FD FF 00 C0 3F 00 60 1F 5F BF F5 7F 15 60
FF FE CF F8 00 04 F8 07 F2 FC FA 35 60 16 70 16
30 36 70 3A B0 FF 5F BF 2F DF 1F 60 00 3F F8 00
A0 FE 0F 36 70 F4 FA F8 04 00 01 F8 00 D0 9F F0
B1 F0 C3 F0 D5 F0 E7 F0 00 30 DF 7C 83 C6 39 DE
03 41 7C 83 3F 01 FF DB E7 FB C7 10 01 15 21 F7
FD C3 C1 FF 20 1E F9 BC C3 7F 60 9F DE 39 FE 01
00 FF 20 7F 3E F9 FC C3 C6 F9 FE 0B 01 FF 00 FF
FD E3 FD C3 ED 93 FF CD 33 FE 01 0C F3 FE E1 FF
E0 FF FE 01 C0 3F FC 03 27 06 F9 FE 39 41 00 11
D8 53 01 02 11 FE 3C 11 FE 01 C6 39 2C F3 D9 FF
E7 F7 CF F7 CF FB 87 83 F8 FF 40 80 51 2E 31 DE
39 7E 81 06 2D F9 0A 31 FF FF 78 11 C7 A1 41 00
30 1E A4 51 D7 EF E7 DF 78 11 A2 91 B8 51 F9 CF
00 C0 B8 51 79 87 8D 73 3D CA 75 01 F3 A5 21 C7
20 00 F2 CF C7 FB BF C7 AB D7 ED 93 7D 01 21 18
FF FF FD 03 66 99 EE 99 FC 4B 83 E6 23 12 03 3E
01 61 21 DF 35 02 3E 0A 11 81 FF FF 03 67 23 02
44 32 F7 FD 03 03 4F 01 62 9D EC 9F 3F FB 87 E3
9F EE 9D 2C 11 50 72 DF EF 9F F7 0F 07 2F 42 DE
31 3D D6 03 01 7D 83 83 FF 04 31 70 11 CC 04 11
1E 02 C3 D9 15 41 1A 31 FE E1 F7 EC F3 FD A3 12
33 FD 33 7B FF 87 87 FF E6 19 6D 93 FB FF 87 F7
8F FB 87 ED 93 E6 3F 19 00 FF F7 0F 67 69 02 C4
12 FE 5A 32 C6 39 EE 11 FE 01 D6 F7 29 D6 29 1A
32 EE 19 EE 19 7F F6 09 DE 21 CE 31 CE 77 02 A9
10 2F 22 04 31 D6 7B 22 FC 21 42 E0 FC 69 82 F6
22 29 CE 31 FD 83 86 79 F9 00 53 28 12 EE 19 08
FF 18 12 AF DC 3F 7C 83 98 31 80 4F 01 B2 EF 4D
30 CF F3 45 23 F9 87 81 BA DF 02 6E 43 62 BC C3
80 7F 22 5C FF BB 6D 93 ED 93 A9 D7 BB F7 C7 C3
FF D6 12 D6 29 FE 01 D7 EE 11 C6 F9 02 38 7F 02
C6 39 BF 6D 93 B9 C7 ED 93 7A 13 18 7C 7F 63 48
53 FE 01 8C 73 39 F7 01 2F E7 9F CE 3D 2C 11 FB
F7 01 C0 51 F7 DB E7 C3 0E 00 7F 9F BF CF FF DF
E7 EF F3 F6 F9 FA FD 67 FC FF F3 BB 03 94 52 F3
CF BE 03 14 00 60 16 11 E3 E3 53 87 7C 11 00 10

In the compressed gfx file that my tool produced I found 2 sliding windows that have different locations than
the original compressed gfx.
1. $0033 in rom = 56 70, $0033 in my tool = 36 70

Both have the same size and same byte pattern but different locations
FA FC FA FC FA FC FA FC FA FC
in rom 7e:4056-7e:405f
in tool 7e:4036- 7e:403f
there is a total of 4 or 5 matches of this group of bytes


2. $024e in rom = 79 10, in my tool $024e = 00 10

Both have the same size and same byte pattern but different locations
FF FF FF FF
in rom 7e:4079-7e:407c
in tool 7e:4000- 7e:4003
there are a lot of matches

I know the sliding windows can start going forward or backwards and if the same size of matching bytes
are found multiple time it could ether go with the 1st time that pair is found or the last time that
pair was found. These 2 windows seem to be somewhere in between. The original compressor could have been
programed to use random locations for the patterns that are the same bytes of the same size but if that
was the case I would think more of the sliding window locations would be different than just 2 of them.
There has to be some sort of pattern that I haven't found yet. I have yet to fully look at the compressed
gfx that are > 0x10000 in size so that might help find the last piece of the puzzle. I'm not sure that
I can spend much more time on this because I have a lot going on right now but I can do a little more next
week.

Test out the tool and let me know if it is compressing the gfx size correctly and if the gfx is decompressed
correctly in rom. The tool still does not compress files larger than 0x10000 but that will be updated when I get
more time.

October 19, 2020, 07:13:49 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
I forgot to mention for the 2 sliding windows that have different locations than
the original compressed gfx I did find something that could be the missing link but
it might just be a coincidence.

For:
1. $0033 in rom = 56 70, $0033 in my tool = 36 70

Both have the same size and same byte pattern but different locations
FA FC FA FC FA FC FA FC FA FC

The pattern for mine is the 1st time it occurs and for the pattern in the
compressed gfx from the rom it is the 5th time it occurs. Well the compression byte
is 0xf8 and the bits are 1111 1000. Bit 2 is the one used for this window and it has
a bit value of 4. Is it a coincidence, idk?

For:
2. $024e in rom = 79 10, in my tool $024e = 00 10

Both have the same size and same byte pattern but different locations
FF FF FF FF

The pattern for mine is the 1st time it occurs and for the pattern in the
compressed gfx from the rom it is the 33rd time it occurs. Well the compression byte
is 0x14 and the bits are 00010100. Bit 5 is the one used for this window and it has
a bit value of 32. Is it a coincidence, idk?

I'm probably over thinking and these two things are just a coincidence but more research
definitely needs to be done. At least it produces the same compression size.

Pages: [1] 2 3 4 5 6 ... 15