11 March 2016 - Forum Rules

Main Menu

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.

Show posts Menu

Messages - kalita-kan

I used Snes9x 1.51 / 1.60 for debugging and development. Lots of stuff that didn't happen to me randomly glitched the other team members. And the other way around too!

A hardware test showed BSNES/Higan was correct. Really confusing months, so I went for the safe average.
No way to compile from Mac to SNES - base internals too different to work.

Noah's Ark has its own funky problem which I couldn't get it working (source build). It would help as Wolf3D is compiled with optimizations off, but Noah appears to have them enabled. For me though, it made hacking a lot more tolerable.
I think 1st film was done in Dallas, Texas.
An odd twist for me but the Mac Source Code is open-source

Looks very similar to SNES one from Noah's Ark, with some bug fixes which we already added ourselves.
Unfortunately there's now too many optional patches, so much added complexity for people who just want to play Zelda!

Should be some sub-folders to make arriving at the final destination easier

- Optional/Cheats
  > Full Health at Start.ips

- Optional/Original
  > Original Bomb Amounts.ips
  > Original Fast Waterfall.ips
  > Original HUD.ips
  > Original Hidden Secrets.ips
  > Original NES GFX.ips
  > Original Overworld Columns.ips
  > Disable Diagonal Sword.ips
  > Tunic 2 NES Ring.ips
  > Remove Hyrule Fantasy Subtitle.ips
  > Grey Automap.ips
  > Grey Automap (for Original HUD).ips

- Optional/Graphics
  > Link's Awakening GFX.ips
  > FDS Font.ips
  > Bluer Tunic.ips
  > Tunic 2 Ring.ips

- Optional/Dungeons
  > Rearranged Bosses.ips
  > Recoloured Dungeons.ips

- Optional/Title
  > Reworked Title Screen with No Subtitle.ips
  > Reworked Title Screen.ips

More "useful" or "popular" ones should sit on "Optional" top-level.
- Remove Low Health Beep.ips
- ?

March 08, 2022, 10:58:06 AM - (Auto Merged - Double Posts are not allowed before 7 days.)

Refill hearts on death

05:85D0: AD 6F 06  LDA $066F = #$20
05:85D3: 29 0F     AND #$0F
05:85D5: C9 02     CMP #$02
05:85D7: B0 0A     BCS $85E3
05:85D9: AD 6F 06  LDA $066F = #$20
05:85DC: 29 F0     AND #$F0
05:85DE: 09 02     ORA #$02
05:85E0: 8D 6F 06  STA $066F = #$20
05:85E3: 60        RTS -----------------------------------------

====> fits in-place

>05:85D0: AD 6F 06  LDA $066F = #$F0
05:85D3: 29 F0     AND #$F0
05:85D5: 8D 6F 06  STA $066F = #$F0
05:85D8: 4A        LSR
05:85D9: 4A        LSR
05:85DA: 4A        LSR
05:85DB: 4A        LSR
05:85DC: 0D 6F 06  ORA $066F = #$F0
05:85DF: 8D 6F 06  STA $066F = #$F0
05:85E2: 60        RTS
05:85E3: EA        NOP
Zelda patch = yes - Go ahead!
(something I would use)

Game Over + New Game Refill hearts = buggy. You'll get complaints in its current state. If I fix it up, of course you can!

This lets you name ZELDA(---) without triggering the secret.

And this refills your hearts when you die. Free Red Potion.

// Full hearts
>05:8B6D: AD 6F 06  LDA $066F = #$F0
05:8B70: 29 F0     AND #$F0
05:8B72: 09 02     ORA #$02
05:8B74: 8D 6F 06  STA $066F = #$F0

// Partial Hearts
05:8B77: A9 FF     LDA #$FF
05:8B79: 8D 70 06  STA $0670 = #$00


ROM $14B87
>05:8B77: A9 01     LDA #$01
05:8B79: 85 63     STA $63 = #$00
05:8B7B: EA        NOP

// RefillHearts = 1

I didn't cover refilling hearts on main menu - load game.


Snippets from review:

"A lot of great quality of life features were added, each of them improving the gameplay bit by bit."

"A great effort, but doesn't fix the biggest issue".

"However, the biggest issue of Zelda 1 and the reason I hate it with a passion is the fact that when you die, you start with only 3 hearts, no matter how many Heart Containers you obtained throughout the game. "

"This made me realise this hack just doesn't do enough to make this game accessible to people who can play every other Zelda in the series, but can't get through this."

"I didn't like the original for its obtuse outdated stuff"

Honestly to me, it sounds fair and not harsh or over-reaction. More of a .. don't waste my time with something I don't care about (life grinding).

March 05, 2022, 09:56:10 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

Actually, it's buggy
- Save and quit. Load another game = refills all hearts.
- Save and quit. Exit game. Reload game. 2 hearts.

But if you die and "Save and continue", you're fine. Or "retry".

So patch needs work. :)
Q: So if someone invented 2 patches

1) Let's you name Zelda and start 1st quest
2) Refills all hearts on death (overworld, dungeon)

You'd be willing to give this game another try?
SPC700 has such a tiny brain, it made me cry all over trying to fit the sfx we could into the "final" product - only have ~300 bytes left. You're still missing out on enough, especially anything higher quality; I had to use the SNES gun shot.

Zeldix SC-55 pack is using Prince's original + Jaguar MIDI + Reconstructed DOS MIDI so it's a grabbag, but soundfont is weak. This one has more missing instruments and fullness

I suppose people can mod the game later to use sprites they want, within limits. So if you want wider / larger gun sprites, people will have to figure out how to modify the sprite engine, which I guess could be done with some coding creativity.

Game has a dynamic sound loading feature but it incurs a lot of unavoidable pause lag. SNES Noah3D has it bad all over; relied on it too much.
Personal Projects / Re: The Minucce Yard
February 28, 2022, 02:50:01 PM
Oh my gosh! Completely forgot about that hack. It's "shipped" but not "finished"; still usable I guess. :)

Sure, go right ahead!
(I wasn't able to fix many slowdowns, just the easier ones)
I think I brought up (just some) of those points with Fire-WSP. You might want to contact WSP in PM when you get the chance; there's .. uhm .. more possibly planned than anyone may think. Even I don't have the complete design but I'm always trudging through the asm and trying to survive. That's enough of an angry chore.

I know R. Prince released several official MIDIs for Wolf, which a few make use of TR-808 and other GS-exclusive programs. D2 I honestly never knew about. The rest (I listened to) were cobbled from Jaguar or dro2midi (?). I know Jaguar MIDIs are still different from the official ones, and the Mac MIDIs sound similar but I guess were creative interpretations of the original source. The 3DO ones I never listened to but are reportedly different from Mac.

WSP wants something more-more-heavy faithful to DOS, and knowing the intricate differences between all of them is definitely out of my league. I don't know exactly what will be satisfaction-level. I've listened to one DOS / Spear compilation (brainstewx) but it has some copyrighted MIDIs by Prince so I think can't post link directly here.

Very neat to know you worked on the re-release of S3DNA though!

The SNES Wolf MIDIs you have are the "stripped down" versions? Like a few programs (Oboe, Organ, Pan Flute, Trombone, Slap Bass, Bass Drum, High Hat, Snare Drum)? Because I remember seeing in the ROM that the MIDIs are converted on-the-fly but a few similar percussion are squashed together into one voice sample)

case 128+35: // Bass drum
case 128+36:

case 128+38: // Snare drum
case 128+40:

case 128+42: // High hat
case 128+44:
case 128+46:

What I never checked is if the SNES MIDIs (Wolf / S3DNA) have those extra #s intact, just lost when played through the SPC.

Thanks for trying to communicate! Fire-WSP will have the whole story that I omitted.
> Will you unlock 60fps? Support CPU overclock?

Emulator overclocks work fine on this game. Constant steady 15 fps.

I doubt 60 fps is possible. Mode 7 uploads eat up so much time, would leave no time for face pain frame changes.

Did try 30 fps. It goes z-o-ooooo-m. Faster than in-game running button. It would require completely re-timing engine.

I imagine you're thinking of DOS-sized 64x64 wall textures?

> Give tools to extract assets?

I'll compile a list later.

> Which map editor to use?

TED5 is open-source now. And the SNES / Jaguar map format is not PC friendly. Some icon row adjustments are needed.

> Add back DOS features? Death Cam? Patrols? Guard long-distance fire? More death shouts?

Think of it as SNES-enstein. Some hybrid of all ports so don't expect anything new or creative. Still have to work within SNES limits (*64k spc*). Maps are kinda small for guard patrols, and that isn't simple to just add back in. It's not like I can hack the C code directly. I'm nearly fed up with the asm part.

If you mean the DOS guards are likely to shoot from way farther out, well. I got burned playing DOS incarnate when treating it like SNES difficulty. That feature would be increasing the SNES difficulty though.

> Is there MSU OST we can add? Also support SNES OST? More sfx voice channels?

I think the SNES MIDIs are in the ROM so anyone can convert them into MSU soundtrack, if that's your style.

If MSU is used, you will increase 2 -> 7 for sfx channels. It helps a lot with voice cutoff problems.

> Options. Easter eggs

Go read the source code when it comes out. :p
Up to me = at my whim then. Her pleasure. So be nice and you get a less than decent chance. Hahaha!

Not joking aside, I worked from Noah's open source and it still was a massive pain! A lot of the bug fixes people may not be interested in N3D (most are not impactful). Source code, yes. My tools = yes. Assets, trademarks = no.

Spent too much time on this to not share something, but not enough to stir the nest. A clever person will be able to re-build the assets from a laundry list and final product. Or just take Noah's assets and insert back into Wolf.

I haven't seen anyone port the Jaguar spawning behavior so I imagine they changed the compression and map editor. Boo!
Fire-WSP: your PM inbox is full. Mine is getting that way too. :)

Vague talk:
Just a note that I mostly understand the format and might be able to save you time by using what we have. Big if though, need to try.
Sprites are compressed for run-time performance, by not processing invisible pixels. Some levels are terrible due to huge number of guards (5-6 / 5-B).

Using higher-res wall textures would incur similar type of penalty. Lag can be bad already at 32x32. We're lucky to hit constant stride of 15 fps, but large or odd-shaped rooms can tank it.

CD quality audio = sure. But I have to make everything work as well as possible without extra chip / hardware enhancements.

There's enough engine hacking (NDA) left to do. So project is going to take time.
I'll bump so Fire-WSP can post fresh news later.

Uncut sprites are in. Quickly played whole game and looks okay. There's more SNES points that require looking at though.
Thanks for the PM material! No leaks coming from my side!

With @Minucce's help, we dug through the source a lot more. It appears that iD did not give WT the final source code, as there are missing and changed asm bits from the Wolf3D build that WT RE-disasm'd themselves (lots of comments at times). They hid these comments behind "IDefs". And iD did not give the complete toolset either (other custom source code missing).

We did hunt down some WDC tools that appears to compile the Noah files. Looks like this atm:

echo off

WDC816AS.exe -L test.asm
WDC816AS.exe -L wolfasm.asm
WDC816AS.exe -L struc.asm
WDC816AS.exe -L iosnes.asm
WDC816AS.exe -L newrefa.asm
WDC816AS.exe -L extdata.asm
WDC816AS.exe -L rwall.asm
WDC816AS.exe -L rsprite.asm

WDC816CC -D__ORCAC__ -ML -SO -WL -I include tables.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include sounds.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include wolfio.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include snesmain.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include intermis.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include music.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include intro.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include doors.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include enmove.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include enthink.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include level.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include missiles.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include plmove.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include plstuff.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include plthink.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include pushwall.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include refresh.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include refbsp.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include refspr.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include sight.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include wolfmain.c
WDC816CC -D__ORCAC__ -ML -SO -WL -I include statedef.c

WDCLN.exe -F noah.lnk -Llibcl



We made a custom makerom.exe to replace the rom(emulator) tool that won't work (needs original eeprom hardware). But compiled build is not same as Noah binary and doesn't run in emulator, with enough unknown code mismatches. We'll keep looking at this approach also.

ORCA/c is not zardoz so we wonder if Burger Becky was cross-compiling on IIgs.

Color Dreams (Wisdom Tree) did make some of their own tools (zeropack, decomp0) so we'll look at using those to expand the rom for easier modification. It's pretty packed tight. If something comes out, naturally I'll ship it to you in private first.
Interested = Partly.
Able = Hm..?

Noah3D generates 185 sprites; Wolf3D only has 170 sprites.

This should be the correct (..?) script file to use

If you did not add or remove any transparent pixels, then I suppose it should fit perfectly. Otherwise could you upload the newly generated SPRSTRUC.C file? I'd like to see where it diverts from rom table.
Posted earlier


Only the lower part in both binaries are identical. The middel part looks similar but has quite some changes.
The first few lines are totaly different.
That shouldn't be the case since it is the same GFX.

Official tool looks to work correctly but the pointers are completely messed up, hence the crash (Minucce verified this appears to be the case and explained to me the storage format and pointer system).

If you modified SPSCRIPT.TXT, then this is likely why it died. The pointer system is multi-layered and easy to fail if something is added or removed.

I'm assuming you changed all the LBM files to the correct graphics. Use original SPSCRIPT.TXT and run SPRGRAB.EXE. You'll need these 2 output files: SPRSTRUC.C (pointer table) and SPRITES.BIN (sprite data + mode7 pixels).

SPRITES.BIN you insert back into ROM at c30000-c7c7d8. If it's larger than this, you'll have to use expanded rom at d00000 to make it work.

Next problem we discussed together is that you will need a custom tool to inject sprite table SPRSTRUC.C back into the ROM. Which is roughly at CFDAxx - CFDB56 (guard_wlk1) - CFDF8C (end?). It's another annoying compression (rle-zero). This might need relocating also if it goes beyond the limit.

Final problem is that game loads entire sprite table into ram at bootup. So any changes to sprite (width or height) will destroy the entire pointer system. Requires a complete game reboot.
Personal Projects / Re: Zelda II Redux
December 21, 2021, 07:09:52 PM
Normally there's no way to access that 2nd secret, without using a cheat code?? It only seems to work in original and redux (when not using secret.ips)