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

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 - rainponcho

Pages: [1] 2 3 4 5 6 ... 14
1
I've asked MrRichard999 if he's going to allow an addendum (my experience with Wizardry Empire GBC projects).


Here's an unenhanced addendum patch in the meantime.
https://www.sendspace.com/file/g5dv40

Enhanced --> Normal / Classic / Purist / Vanilla / Original
- dungeon movement
- encounter rate


Did get a few project requests for some extra enhancements. So that patch might grow a bit. Like I had an idea about maybe halving the rate weapons break, which is ~1/11 iirc. The way they did the randomizer wasn't so fun to work with for combat.


And sent MrRichard999 tools to (de-)crunch the bitmaps. What a bastard that turned out - Atlus somehow math optimized every possible byte gain. And they carefully thought it out.
ex. 1 Raw + 2 Rle + 1 Raw (7) ==> 4 Raw (5).

I come close to original size #s but I'm over a bit. Hopefully Japan --> English will shrink it down to safe levels.


But project is green lighted for start!

2
News Submissions / Re: ROM Hacks: New Hacks Added to the Database
« on: August 10, 2017, 10:56:41 am »
Correct. Rockman Perfect Memories script was used as the base.

I'll let SCD decide on everthing else since I mostly just do consultant asm hacking work and offer up suggestions.

Unless it's my own personal release, then I get to decide what goes in. :)


But thanks for pointing these details out! I wasn't aware of any of them (other than Die Wily!) and thought okay. Although I think the patch is meant to be fully compatible with the MM7 Refit hack so I'm not sure how they'll jive. o_O

3
ROM Hacking Discussion / Re: Screenshots
« on: August 10, 2017, 10:44:43 am »
Well big congratulations on that one! Considering how stumped I was on why it wasn't showing correctly and post-screen crashing. Although I'm wondering if it would've been easier to "jsr" the text part and leave rest of the scripting code alone.

4
Fully understand how it decodes. Writing the compressor, although algorithm uses multi-rle and wrapping LZ cache history. This should be solvable but not as quickly as I'd like, since decoder gave me some trouble actually with its use of wraparound behavior.


Funny thing is I didn't know Sonic Blast is a 1MB cartridge. Always thought GG went up to 512KB.

5
News Submissions / Re: ROM Hacks: New Hacks Added to the Database
« on: August 09, 2017, 10:26:18 pm »
Uhm. Crap. I gave the wrong patch to SCD. I'll have to rebuild my part of it and send it over.

Sorry about that.

6
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: August 09, 2017, 12:28:53 pm »
Quote
So when the game first initializes Rooks' EXP to next level, it uses $07/B29F to store $0A to $1363. Problem is, hijacking it there calls an ADC with the current value, which before initialization is $5555. So, you may need to STZ $1363 (and STZ $1365 for the Spirit) on startup, or add it with another STZ like $81/821F (STZ $1393). That's max HP values, so I doubt it would get called more than once.

Yup, thanks (!) I get the problem(s) now. Didn't think about when new characters join party ==> mega bug!

Can't believe you figured out damage formula so quickly. I stared at that for awhile and thought meh; have other things to do. Starting to think you're better at asm than I am. :)

Will try to get something working for levelup. ^^


edit:
new levelup idea
https://www.sendspace.com/file/8vw1l5


Moved exp gain up to 87:B29B. And following up on KingMike's expert observation about uninit ram (thanks for this!), cleared out that area of memory on bootup (~$30 bytes worth to be safe). It should work properly now.

Vanilla game writes to current exp first, before writing to max hp.


edit2:
Gave fight with 1 Goblin 65535 exp. Rooks + Teefa (Tifa?) = LV36 and stopped. Also used a cheat code to force Rooks exp = 0 always. LV60 and stopped.


edit3:
Bad news. Thought of how it could break - game over screen. So either reset data on new game, load game. Or maybe when a new person enters party, it flips that active member switch from 0 -> 1 somewhere around there.

7
Starting to reduce my backlog and took a quick peek at Last Bible compression. Throws the font in at bootup. Looks like your typical Liv-Zempel stuff with some strange tweaks thrown in.

Think I can handle this method; not some wicked waterfall of pain like Pack-in-Video or Falcom. MrRichard999 will be taking care of the rest if tool gets ready. Hopefully. :)


Although I thought someone posted some translated + inserted intro pictures at one point??

And a bit ironically, looks like Tom could turn out to be the Last Bible master (1/2/3/S).

8
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: August 06, 2017, 04:15:22 pm »
Tracked back where exp check came from and wondered why it looked like 16-bit, 24-bit data ptrs. Check tracking the script loop and mapped out stuff I wanted.


Code: [Select]
01:9028 = run code 1b. jsr to 907f and continue.

I edited this to run my own code at 81:ff00
-- jsr $907f
-- asm level_loop (rewinds ptr if exp overflow)
-- rts


===>

level up routine
01:907f = ...
...

01:90aa = run code 07. asm code 07:b234. This checks our exp and returns
-- 0 = no level
-- 1 = level up.

01:90ae = run code 0b. If our flag is 0, then jump to (01:)9129.

-- (no jump) 01:90b1 = start elemental upgrade logic
-- (jump) 01:9129 = run code 1c. Exit routine.


Code: [Select]
get max damage??
$80/C0CB AE 21 11    LDX $1121  [$80:1121]   A:0067 X:0094 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0434 VC:093 FC:26 I:00
$80/C0CE 22 CA C4 80 JSL $80C4CA[$80:C4CA]   A:0067 X:0008 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0474 VC:093 FC:26 I:00
$80/C0D2 85 00       STA $00    [$00:1E00]   A:0041 X:0000 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0698 VC:097 FC:26 I:00



player defense bonus
$80/C0D4 AE 23 11    LDX $1123  [$80:1123]   A:0041 X:0000 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0732 VC:097 FC:26 I:00
$80/C0D7 22 26 C5 80 JSL $80C526[$80:C526]   A:0041 X:0000 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIZc HC:0772 VC:097 FC:26 I:00
$80/C0DB 85 02       STA $02    [$00:1E02]   A:0041 X:0033 Y:0000 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0704 VC:100 FC:39 I:00

1 armor = 1/255 less damage. Or maybe 1/256 less damage.

My damage formula notes are fuzzy because I don't quite understand it either. :)

9
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: August 03, 2017, 10:47:17 pm »
Yeah, happens in the new FastROM patch too (one in queue). I'll try sorting it out. Anyone I've worked with can tell you how buggy my stuff can be. :)
(Wish I had more time to actually play these games instead of just panic speedrun testing all these hacks I make)



Meantime, made a patch that will multi-level up and rollover exp gains.
https://www.sendspace.com/file/nqij5l
(this was not trivial at all so I pitched in here)


Game uses a scripting language that made this more difficult than imagined.

$80/902B = where it reads scripting code
07 = run asm code (24-bit addr)
0c = jump if false (16-bit addr)
1b = jsr (16-bit addr)
1c = ret


ex.
01:90aa = 07  07b234  ==> check exp asm
01:90ae = 0b  9129    ==> no gain level (jmp)

Eventually found where it does the level up routine and extended it via scripting.


edit: HAL actually uses the DMA for that cutscene. Which collides with some speedup tricks. Have to rework it then. :|



edit2: New fastrom patch in queue. Do not use hdma 2,3,4,7.
https://www.sendspace.com/file/5a63vs

Played up to Chapter 3 ending okay.



edit3:
Some info about how battle damage works.

Code: [Select]
battle


$80/C0B9 C5 00       CMP $00    [$00:1E00]   A:0067 X:0094 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0278 VC:093 FC:26 I:00
$80/C0BB 90 04       BCC $04    [$C0C1]      A:0067 X:0094 Y:0008 D:1E00 DB:80 S:1FF0 P:eNvmxdIzc HC:0312 VC:093 FC:26 I:00
$80/C0C1 9C 25 11    STZ $1125  [$80:1125]   A:0067 X:0094 Y:0008 D:1E00 DB:80 S:1FF0 P:eNvmxdIzc HC:0336 VC:093 FC:26 I:00
$80/C0C4 C5 02       CMP $02    [$00:1E02]   A:0067 X:0094 Y:0008 D:1E00 DB:80 S:1FF0 P:eNvmxdIzc HC:0376 VC:093 FC:26 I:00
$80/C0C6 B0 03       BCS $03    [$C0CB]      A:0067 X:0094 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0410 VC:093 FC:26 I:00



get max damage
$80/C0CB AE 21 11    LDX $1121  [$80:1121]   A:0067 X:0094 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0434 VC:093 FC:26 I:00
$80/C0CE 22 CA C4 80 JSL $80C4CA[$80:C4CA]   A:0067 X:0008 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0474 VC:093 FC:26 I:00
$80/C0D2 85 00       STA $00    [$00:1E00]   A:0041 X:0000 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0698 VC:097 FC:26 I:00




player defense value
$80/C0D4 AE 23 11    LDX $1123  [$80:1123]   A:0041 X:0000 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0732 VC:097 FC:26 I:00
$80/C0D7 22 26 C5 80 JSL $80C526[$80:C526]   A:0041 X:0000 Y:0008 D:1E00 DB:80 S:1FF0 P:envmxdIZc HC:0772 VC:097 FC:26 I:00
$80/C0DB 85 02       STA $02    [$00:1E02]   A:0041 X:0033 Y:0000 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0704 VC:100 FC:39 I:00


======================================


$80/C526 86 06       STX $06    [$00:1E06]   A:0041 X:0000 Y:0008 D:1E00 DB:80 S:1FED P:envmxdIZc HC:0836 VC:097 FC:39 I:00
$80/C528 A4 06       LDY $06    [$00:1E06]   A:0041 X:0000 Y:0008 D:1E00 DB:80 S:1FED P:envmxdIZc HC:0876 VC:097 FC:39 I:00
$80/C52A A2 00 00    LDX #$0000              A:0041 X:0000 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIZc HC:0916 VC:097 FC:39 I:00
$80/C52D 20 81 C7    JSR $C781  [$80:C781]   A:0041 X:0000 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIZc HC:0946 VC:097 FC:39 I:00
$80/C530 A2 66 00    LDX #$0066              A:0028 X:0056 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0124 VC:098 FC:39 I:00
$80/C533 20 8B C8    JSR $C88B  [$80:C88B]   A:0028 X:0066 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0160 VC:098 FC:39 I:00
$80/C536 29 00 FF    AND #$FF00              A:0FF0 X:0066 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0588 VC:098 FC:39 I:00
$80/C539 EB          XBA                     A:0F00 X:0066 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0624 VC:098 FC:39 I:00
$80/C53A 85 08       STA $08    [$00:1E08]   A:000F X:0066 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0660 VC:098 FC:39 I:00
$80/C53C A4 06       LDY $06    [$00:1E06]   A:000F X:0066 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0706 VC:098 FC:39 I:00
$80/C53E A2 00 00    LDX #$0000              A:000F X:0066 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIZc HC:0752 VC:098 FC:39 I:00
$80/C541 20 D1 C7    JSR $C7D1  [$80:C7D1]   A:000F X:0000 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIZc HC:0788 VC:098 FC:39 I:00
$80/C544 A2 33 00    LDX #$0033              A:0028 X:00A4 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:1330 VC:098 FC:39 I:00
$80/C547 20 8B C8    JSR $C88B  [$80:C88B]   A:0028 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:1366 VC:098 FC:39 I:00
$80/C54A 29 00 FF    AND #$FF00              A:07F8 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0390 VC:099 FC:39 I:00
$80/C54D EB          XBA                     A:0700 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0426 VC:099 FC:39 I:00
$80/C54E 18          CLC                     A:0007 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0462 VC:099 FC:39 I:00
$80/C54F 65 08       ADC $08    [$00:1E08]   A:0007 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0492 VC:099 FC:39 I:00
$80/C551 85 08       STA $08    [$00:1E08]   A:0016 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0538 VC:099 FC:39 I:00
$80/C553 A6 06       LDX $06    [$00:1E06]   A:0016 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0624 VC:099 FC:39 I:00
$80/C555 20 6A C6    JSR $C66A  [$80:C66A]   A:0016 X:0000 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIZc HC:0682 VC:099 FC:39 I:00
$80/C558 A2 33 00    LDX #$0033              A:00DC X:00DF Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0032 VC:100 FC:39 I:00
$80/C55B 20 8B C8    JSR $C88B  [$80:C88B]   A:00DC X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0068 VC:100 FC:39 I:00
$80/C55E 29 00 FF    AND #$FF00              A:2BD4 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0456 VC:100 FC:39 I:00
$80/C561 EB          XBA                     A:2B00 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0492 VC:100 FC:39 I:00
$80/C562 18          CLC                     A:002B X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0528 VC:100 FC:39 I:00
$80/C563 65 08       ADC $08    [$00:1E08]   A:002B X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0598 VC:100 FC:39 I:00
$80/C565 6B          RTL                     A:0041 X:0033 Y:0000 D:1E00 DB:80 S:1FED P:envmxdIzc HC:0644 VC:100 FC:39 I:00


=========================================



$80/C0DD AE 23 11    LDX $1123  [$80:1123]   A:0041 X:0033 Y:0000 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0750 VC:100 FC:39 I:00
$80/C0E0 A0 0C 00    LDY #$000C              A:0041 X:0000 Y:0000 D:1E00 DB:80 S:1FF0 P:envmxdIZc HC:0802 VC:100 FC:39 I:00
$80/C0E3 22 85 C5 80 JSL $80C585[$80:C585]   A:0041 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0838 VC:100 FC:39 I:00


base defense -- rooks = $19
$80/C0E7 BF 4F C0 80 LDA $80C04F,x[$80:C04F] A:0000 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIZc HC:0024 VC:101 FC:39 I:00
$80/C0EB A2 33 00    LDX #$0033              A:0080 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0078 VC:101 FC:39 I:00
$80/C0EE 20 8B C8    JSR $C88B  [$80:C88B]   A:0080 X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0114 VC:101 FC:39 I:00
$80/C0F1 29 00 FF    AND #$FF00              A:1980 X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0502 VC:101 FC:39 I:00
$80/C0F4 EB          XBA                     A:1900 X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0102 VC:101 FC:26 I:00


+ armor bonus + level bonus
$80/C0F5 18          CLC                     A:0019 X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0126 VC:101 FC:26 I:00
$80/C0F6 65 02       ADC $02    [$00:1E02]   A:0019 X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0144 VC:101 FC:26 I:00
$80/C0F8 85 02       STA $02    [$00:1E02]   A:005A X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0178 VC:101 FC:26 I:00


$80/C0FA A9 FF 00    LDA #$00FF              A:005A X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0212 VC:101 FC:26 I:00
$80/C0FD 38          SEC                     A:00FF X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0236 VC:101 FC:26 I:00
$80/C0FE E5 02       SBC $02    [$00:1E02]   A:00FF X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0254 VC:101 FC:26 I:00


~~ damage % amount -- $a5 = 0.64453125 x full damage
$80/C100 AA          TAX                     A:00A5 X:0033 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0288 VC:101 FC:26 I:00


get full damage amount??
$80/C101 A5 00       LDA $00    [$00:1E00]   A:00A5 X:00A5 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0306 VC:101 FC:26 I:00
$80/C103 20 A1 C8    JSR $C8A1  [$80:C8A1]   A:0041 X:00A5 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzC HC:0340 VC:101 FC:26 I:00



======================================================

$80/C8A1 85 22       STA $22    [$00:1E22]   A:0050 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIzC HC:0616 VC:096 FC:26 I:00
$80/C8A3 20 8B C8    JSR $C88B  [$80:C88B]   A:0050 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIzC HC:0650 VC:096 FC:26 I:00


$80/C8A6 85 24       STA $24    [$00:1E24]   A:4150 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIzC HC:1026 VC:096 FC:26 I:00
$80/C8A8 A5 22       LDA $22    [$00:1E22]   A:4150 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIzC HC:1060 VC:096 FC:26 I:00
$80/C8AA EB          XBA                     A:0050 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIzC HC:1094 VC:096 FC:26 I:00
$80/C8AB 20 8B C8    JSR $C88B  [$80:C88B]   A:5000 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:1160 VC:096 FC:26 I:00


$80/C8AE 85 22       STA $22    [$00:1E22]   A:0000 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:0172 VC:097 FC:26 I:00
$80/C8B0 29 00 FF    AND #$FF00              A:0000 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:0206 VC:097 FC:26 I:00
$80/C8B3 EB          XBA                     A:0000 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:0230 VC:097 FC:26 I:00
$80/C8B4 AA          TAX                     A:0000 X:00D1 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:0254 VC:097 FC:26 I:00
$80/C8B5 A5 22       LDA $22    [$00:1E22]   A:0000 X:0000 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:0272 VC:097 FC:26 I:00
$80/C8B7 29 FF 00    AND #$00FF              A:0000 X:0000 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:0306 VC:097 FC:26 I:00
$80/C8BA EB          XBA                     A:0000 X:0000 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:0330 VC:097 FC:26 I:00
$80/C8BB 18          CLC                     A:0000 X:0000 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZC HC:0354 VC:097 FC:26 I:00
$80/C8BC 65 24       ADC $24    [$00:1E24]   A:0000 X:0000 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIZc HC:0372 VC:097 FC:26 I:00
$80/C8BE 90 01       BCC $01    [$C8C1]      A:4150 X:0000 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIzc HC:0406 VC:097 FC:26 I:00
$80/C8C1 60          RTS                     A:4150 X:0000 Y:0008 D:1E00 DB:80 S:1FEB P:envmxdIzc HC:0430 VC:097 FC:26 I:00

======================================================


final damage
$80/C106 29 00 FF    AND #$FF00              A:29E5 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0286 VC:102 FC:26 I:00
$80/C109 85 00       STA $00    [$00:1E00]   A:2900 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0310 VC:102 FC:26 I:00



$80/C10B 8A          TXA                     A:2900 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0344 VC:102 FC:26 I:00
$80/C10C 05 00       ORA $00    [$00:1E00]   A:0000 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIZc HC:0362 VC:102 FC:26 I:00
$80/C10E EB          XBA                     A:2900 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0396 VC:102 FC:26 I:00
$80/C10F 85 00       STA $00    [$00:1E00]   A:0029 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0420 VC:102 FC:26 I:00





$80/C111 AE 21 11    LDX $1121  [$80:1121]   A:0029 X:0000 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0454 VC:102 FC:26 I:00
$80/C114 AC 23 11    LDY $1123  [$80:1123]   A:0029 X:0008 Y:000C D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0494 VC:102 FC:26 I:00
$80/C117 20 B1 C5    JSR $C5B1  [$80:C5B1]   A:0029 X:0008 Y:0000 D:1E00 DB:80 S:1FF0 P:envmxdIZc HC:0534 VC:102 FC:26 I:00


$80/C11A AA          TAX                     A:0002 X:0005 Y:0003 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0538 VC:113 FC:26 I:00
$80/C11B BF 76 C1 80 LDA $80C176,x[$80:C178] A:0002 X:0002 Y:0003 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0596 VC:113 FC:26 I:00
$80/C11F A6 00       LDX $00    [$00:1E00]   A:0100 X:0002 Y:0003 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0638 VC:113 FC:26 I:00
$80/C121 22 39 8A 80 JSL $808A39[$80:8A39]   A:0100 X:0029 Y:0003 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0672 VC:113 FC:26 I:00


$80/C125 A5 01       LDA $01    [$00:1E01]   A:0000 X:0000 Y:0003 D:1E00 DB:80 S:1FF0 P:envmxdIZc HC:0616 VC:114 FC:26 I:00
$80/C127 85 00       STA $00    [$00:1E00]   A:0029 X:0000 Y:0003 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0650 VC:114 FC:26 I:00
$80/C129 AE 21 11    LDX $1121  [$80:1121]   A:0029 X:0000 Y:0003 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0684 VC:114 FC:26 I:00
$80/C12C AC 23 11    LDY $1123  [$80:1123]   A:0029 X:0008 Y:0003 D:1E00 DB:80 S:1FF0 P:envmxdIzc HC:0724 VC:114 FC:26 I:00
$80/C12F 20 0C C3    JSR $C30C  [$80:C30C]   A:0029 X:0008 Y:0000 D:1E00 DB:80 S:1FF0 P:envmxdIZc HC:0764 VC:114 FC:26 I:00

From what I get so far, Rooks has a base armor value @ 80C04F,x table. Add level buffs + armor. Gives us full defense.

255 - full_defense = % attack.


Admittedly it does more math down the line around $80/C156 with that $29 value * $00C0 ==> $1E (30 points). It then adds another 4 points @ $80/C2CB = final 34 damage Rooks receives.




Efrite hits Rooks

$80/C0DB values ==> final damage

$00 ==> 44 points
$41 ==> 34 points
$7f ==> 21 points
$80 ==> 20 points
$c0 ==>  6 points
$e0 ==>  1 points
$e6 ==>  1 points

$e7 ==> 52 points
$f0 ==> 47 points
$ff ==> 41 points


Notes are messy but this is what I've got. You have to play around with all the values at various spots to see how final damage gets tweaked around. Then it's a bit more clear how this thing works. ^^

10
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: August 02, 2017, 12:33:34 pm »
Haven't forgotten about uploading a standalone fastrom patch for vanilla. After optimizing Super Ghouls 'n Ghosts to playable levels, learned some new tricks.


Moving through Stavery is a little faster now. To me, almost bearable walking speed now when holding motion button down.

11
Personal Projects / Re: Translations of early Famicom games
« on: July 28, 2017, 08:59:25 am »
My take would be.. how does the rest of the series go, averaging all the reboots, remakes and modern #d titles?

I can only think of maybe 1 or 2 people who would cry over the loss of 'honorifics' or something of that type. Or changing it back to Roto / Loto. They're likely more concerned about canon and terminology.



I think (thy, thee, thou, thine, ..) sometimes more distracting when it's over-abused. It's so "_formal_" and easily stereotyped. "Flashy" when thrown in just to look fancy (in a cheap way).

https://www.ecclesia.org/truth/thou.html
http://unenlightenedenglish.com/2009/07/thou-thee-thy-thine-ye-shakespearean-english/


Wizardry series uses it more often, even for Empire spellbook names (only Valiant holy religious class).

Maybe anyone who {considers} themself pretty important. Possibly in a demeaning "enlightened educated" way. High position authority.


I'll stop blabbing. Getting more confused. :)

12
You'll find Arthur's sprites at rom 70000-7FFFF. They're 4-bpp snes tiles, uncompressed.

??: Try yy-chr as alternate -- default colors come up somewhat easier here for viewing.


Everything else is basically (bitmask) compressed. Highly suggested you get "Lunar Address" to convert SNES addresses ==> rom address.

Code: [Select]
graphics table

00:b106 = 3106 rom


        snes   size
00 0000 13A24E 3000
07 0000 13C3E3 2200
0e 0000 108000 7800
15 A000 10E842 5940
1c 0000 11AFFA 7800
23 A000 129460 5000
2a 0000 12D122 7800
31 0000 18C000 3860
38 0000 18F186 6DC0
3f 0000 19C74A 3EA0
46 0000 1CC3B1 0E20
4d 0000 1CCFAE 0C00
54 A000 13DF69 2600
5b 0000 1ABEF7 1D00
62 0000 13FDB3 1B00
69 0000 1AD763 0100
70 0000 149625 3800
77 A000 17930C 0180
7e 0000 14D7C2 2000
85 0000 14C9E4 1000
8c 0000 1ABEF7 1D00
93 0000 14F3A2 0800
9a 0000 14FAF6 0800
a1 0000 1AD844 0900
a8 0000 1CD77F 01A0
af 9800 1CD8FE 0500
b6 0000 168D88 1000
bd 0000 169A5F 0800
c4 0000 158191 7800
cb 0000 1B84E0 0720
d2 A000 15EAC0 3280
d9 0000 16B6FA 7000
e0 9000 17918C 0200
e7 0000 1B8B9E 1260
ee 6000 17BB5A 2000
f5 0000 17D7D4 7F00
fc A000 1D9F7F 3800
103 0000 18A91C 1700
10a 0000 18B800 0800
111 A000 1D9F7F 3800

118 0000 08C600 2000
11f 2000 09D000 1800
126 0000 1D9F7F 3800

12d 9980 1CD8FE 0500 font 2-bpp
134 9D00 1DF641 01A0 font 2-bpp

Note that not all this is graphics. Some are data files.

Get this tool:
https://www.sendspace.com/file/h4g3wb


0. Let's look at file 00.

1. Lunar Address: 13a24e snes LoROM ==> 09A24E pc rom.

2. Add this line to super_ghouls-decode.txt
decode_super_ghouls 09A24E 3000 gfx_0

3. Now run decode batch file.

4. Open it up. Looks like title screen.

5. Bonus -- looks like stage graphics
decode_super_ghouls 09C3E3 2200 gfx_07


You'll have to check each file for enemy graphics. Rearranging graphic sprite tiles = ... that's a pretty annoyingly complicated topic that I haven't mastered or understand really much at all.

But the above summary is mostly what I know of the game.


If you check SCD's Super Ghouls 'n Ghosts restoration, it'll give you hand-optimized fastrom support = major speedup improvements.

13
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: July 25, 2017, 08:22:42 am »
Forgot to remove that cheat - good for exploration though. :)


And I goofed this line:

(ffec ==> ffee)
org $ffee
dw fastrom_irq


And I'm told you don't need this part either:

// lorom, fastrom
org $ffd5
db $30


Otherwise good luck with it!

14
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: July 24, 2017, 09:17:06 pm »
This is nearly most I could torture engine. If you generic optimized every single possible thing, maybe you could squeeze another frame.
https://www.sendspace.com/file/kstnbk


Full fastrom ips tester can be applied to vanilla rom. It should give some walking boost (~7-8 frames or ~33%).



The rest of the slowdown comes from running this all the time:
JSR $99FE  [$83:99FE]

That's hard to figure out how to get it better. But that spot would kick it down another 2-3 frames possibly.

15
Programming / Re: Mega Man X3 FastRom Issues
« on: July 24, 2017, 12:36:46 pm »
Maybe you could petition someone to make a FastRom homebrew CX4 board. And/or get emulator devs to support the feature. I'm sure MMX hackers would put speedup to pretty good use. :)

16
Programming / Re: Mega Man X3 FastRom Issues
« on: July 24, 2017, 11:56:00 am »
When you flip FastROM flag, emulator identifies cartridge as plain LoROM/FastROM + no CX4 chip.

Emulators are locked to use SlowROM only for CX4. I'm assuming because no official FastROM CX4 board exists? Bummer.


Code: [Select]
https://github.com/devinacker/bsnes-plus/blob/c36e59a39f61de23c648e1371bb32fb9662a7d66/snesfilter/nall/snes/info.hpp

if(mapperid == 0x20 && rom_type == 0xf3) {
has_cx4 = true;
}


Code: [Select]
https://github.com/snes9xgit/snes9x/blob/master/memmap.cpp

// C4
case 0xF320:
Settings.C4 = TRUE;
break;

17
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: July 23, 2017, 04:56:16 pm »
I'd say it depends how much time game spends running those routines. If it hits it a lot, then yeah.. you'll want to manually "run-time" optimize them (00:9532) -- it'd take a long time to dissect each bank ptr correctly through disassembly (data storage).

You'll probably find lots of 24-bit ptrs that I missed, because I never came close to triggering them.
[Bwa ha ha!]



If you keep trace logging, you can run it in this tool:
https://www.sendspace.com/file/9z7g4g

Make sure to backup your rom first. Rename it to 'rom'. Rename your geiger tracelog to 'log'. Run exe. It'll parse it and turn things into fastrom banks.

Be careful about it corrupting your own asm hacks if you keep making (changing) them lots of times. Have to be organized. So I'm not officially releasing it or anything. And turned off PEA - PLB detection since there's situations that mess up.



I'll locate some loop offenders and optimize them first. See what I can get before mentioning them here -- have some ideas to test on them. :)

But I'm going to back off with explanations (since clearly I did a lousy job at it) and let KingMike help you understanding technical problems.


edit: Doesn't look like FastRom will help much. So maybe no point in continuing further this way. I guess there's just too much raster math which is taking the brunt of the slowdown.

Which maybe is why FastRom conversions aren't that popular to fix slow games.

You could always work on your other todo items. Sorry, guess another game that's defeated me again.


edit2:
Out of curiosity, tried some more. There's a routine that inits the drawing data. Although it uses mvn, dma speeds it up another 2 frames. So 23 -> 20 (fastrom) -> 18 (dma init).

I'll keep poking at it then and upload optimized asm file w/ full ips patch if I can get some more time cut.

18
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: July 23, 2017, 12:49:11 pm »
xkas-plus
https://github.com/devinacker/xkas-plus/releases


Ips patch changes game's 24-bit JSL, JML, LDA, ORA, STA, (lala) opcodes to fastrom banks. And some PEA / PLB ones. You still need redirects, fastrom 420d, etc.

bonus asm code: game hides some 24-bit ptrs as data. So I found the routine and fastrom edit on-the-fly.


These 2 need remapping to $80 fastrom.
7fea (Native mode NMI): 35 83
7fee (Native mode IRQ): 4E 81

A simple JML $808335, JML $80814E redirect will work.


At F990... I guess technically we have no idea (?) what startup snes settings are. So we need to
1. enter native snes mode: clc - xce
(we could be in native or emulation mode??)

2. set 8-bit accumulator mode: sep #$20
(could be 16-bit A register)

3. write $01 to $420d
(slowrom -> fastrom)

4. jml to normal start code but in $80 bank
(slow bank -> fast bank)


I only got ~3 frames faster per walking step. But it's "free" and easy. :)

You'd have to optimize down the slow loops to get more frames.

19
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: July 23, 2017, 08:04:27 am »
LoROM can be a little funny to understand at first. FuSoYa's tool Lunar Address makes it easier to convert between raw file and snes addresses.

tool
http://fusoya.eludevisibility.org/la/index.html


ex.
Free space located at $6020 rom (file). Lunar Address shows us it's SNES LoROM address 00:E020. Or 80:E020 for FastROM.

Free space F990 (file) = 01:F990 (SNES, SlowRom, LoRom)  81:F990 (SNES, FastRom, LoRom)


Or here's a snippet from FastRom tester
Code: [Select]
arch snes.cpu; lorom


// lorom, fastrom
org $ffd5
db $30


// snes bootup
org $fffc
dw fastrom_start


// todo: snes irq, nmi remap



//$00/9532 A7 10       LDA [$10]  [$01:8CDE]   A:8761 X:000E Y:0001 D:1E00 DB:00 S:1FF6 P:eNvmxdIzc HC:0264 VC:259 FC:59 I:00
//
//$00/9534 29 FF 00    AND #$00FF              A:1103 X:000E Y:0001 D:1E00 DB:00 S:1FF6 P:envmxdIzc HC:0352 VC:259 FC:59 I:00

// snes $9534 = file $1532
org $9534
jsr fastrom_code1



// snes 80e020 = snes 00e020 = file 6020
org $80e020

fastrom_start:
// snes native mode
clc
xce

sep #$20
lda.b #$01
sta $420d

// 00xxxx ==> 808001
jml $808001



fastrom_code1:
and.w #$00ff

cmp.w #$0040
bcs fastrom_code1_done

// 24-bit ptr table code jumps  (00-3F ==> 80-BF)
ora.w #$0080

fastrom_code1_done:
rts


And patch to convert FastRom banks (code analysis).
https://www.sendspace.com/file/60krtf

Although I found a bug with how toll handles plb codes but there weren't many in this game. So I think it was okay - have to recheck.

20
Personal Projects / Re: Arcana - Seal of Rimsala! (SNES)
« on: July 22, 2017, 08:13:26 am »
db starts here.
Code: [Select]
$00/800B A9 00       LDA #$00                A:0000 X:0100 Y:0000 D:0000 DB:00 S:0100 P:envMxdIzC HC:0356 VC:000 FC:00 I:00
$00/800D 48          PHA                     A:0000 X:0100 Y:0000 D:0000 DB:00 S:0100 P:envMxdIZC HC:0380 VC:000 FC:00 I:00
$00/800E AB          PLB                     A:0000 X:0100 Y:0000 D:0000 DB:00 S:00FF P:envMxdIZC HC:0410 VC:000 FC:00 I:00



I think you're choice of free area is probably safe.

Code: [Select]
$00/8019 22 30 E0 80 JSL $80E030
==> JML $80E030


$80/E030 A9 01       LDA #$01
$80/E032 8D 0D 42    STA $420D

$80/E035 C2 10       REP #$10 (The 2 lines I'm replacing with the JSL)
$80/E037 E2 20       SEP #$20
$80/E039 6B          RTL
==> JMP $801D

Your detour works but it'll RTL back to SlowRom area (00). We want to stay in FastRom. So JMP over ($80 -> $80). Then rest of init will go faster.


You might want to hijink the other vectors listed here:
http://www.smwiki.net/wiki/Vector_Info


I might give writing a small fastrom tool a try also, just to see how much it works.

(edit: I'm helping out on some snes projects that run into lorom slowdowns. So I guess I need it too. :))


edit2:
Another db here
Code: [Select]
$00/811A F4 00 00    PEA $0000               A:1E00 X:1FFF Y:0000 D:1E00 DB:00 S:1FFF P:envmxdIzC HC:1290 VC:002 FC:01 I:00
$00/811D AB          PLB                     A:1E00 X:1FFF Y:0000 D:1E00 DB:00 S:1FFD P:envmxdIzC HC:1338 VC:002 FC:01 I:00
$00/811E AB          PLB                     A:1E00 X:1FFF Y:0000 D:1E00 DB:00 S:1FFE P:envmxdIZC HC:0010 VC:003 FC:01 I:00


edit3:
Easier detour idea.

Reset vector is @ rom 7ffc. Change that to E030. Write 420d there. Then JML $808001 to finish it off.

Same for NMI, IRQ vectors. Except you just JML to $80xxxx. No hassle. :)

Use Lunar Address to convert rom  snes address.


edit4:
Tested fastrom. Same 20 frames to walk forward. No difference. Hmm. Stupid me.

Something else.


edit5:
Forgot to turn on Fastrom header. 23 clean -> 20 fastrom to take a step forward. Still slow. :|

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