News: 11 March 2016 - Forum Rules

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

Pages: [1]
Personal Projects / Faxanadu - Unused items and saving unlocked doors
« on: August 28, 2021, 01:17:42 pm »
I decided to have fun and work on a little hack to make the unused items Brown Potion (BLACK POTION) and Fire Crystal (CRYSTAL) have functionality!

The hack is based on UnsavoryMaggot's Faxanadu Restoration hack v1.04. (Thanks for all your hard work!!)

It's a work in progress and currently none of the items have their own text. They just say the Red Potion text.


- The brown potion refills magic, and the refill animation is faster and smoother than the red potion in the original game.
- The hourglass doesn't halve your remaining health, and it lasts twice as long (just because!)
- The fire crystal deals massive damage to the enemies on screen. It will usually kill them all but some enemies like the cobra and the bosses have enough HP that they won't get killed.
- bread restores magic by half as much as it restores health.

Here's what I was thinking for the message that appears when you use the fire crystal:
Code: [Select]
I struck the fire crystal.
Next, I want to make the Holy Bible (BOOK) teleport you to the priest (guru) you would appear at if you died. But using the Bible you won't lose any EXP or gold. So it's like an emergency exit from the battle field.

As for the lamp, I think it should just be changed into another item. I was thinking of using the graphics for the FIRE CRYSTAL (not the one featured here, but the one in the original that has a diamond graphic) and then go from there.
What functionality would you give to an extra item?

Here's some code snippets.

Brown Potion:
Code: [Select]
C48B    LDA EquippedItem         
C48E    JSR $FE60               

FE60    ASL A                   
FE61    TAY                     
FE62    CPY #$22    ;check if item used * 2 is 22 (brown potion)
FE64    BNE $FE69   ;exit if not
FE66    LDY #$20    ;set Y to 20 otherwise (will point to red potion code)
FE68    CLC                     
FE69    RTS

C491    NOP                     
C492    BCS $C49C   ;if the item index used is too high then exit
C494    LDA $C49E,Y ;get low byte of location to jump to based on item used (red potion in this case)
C497    PHA         ;push onto the stack
C498    LDA $C49D,Y ;get high byte of location to jump to based on item used (red potion in this case)
C49B    PHA         ;push             
C49C    RTS         ;pull the two bytes from the stack and jump there.

C533    LDA #$80           ;index of red potion message     
C535    JSR ShowMessage
C538    .db 0c 41 82       ;idk what this is but it's required for the ShowMessage function to work
C53B    LDA EquippedItem         
C53E    STA $A0                 
C540    JSR RemoveSelectedItem   
C543    LDX #$50           ;max health is 50 so this is the max countdown for refill
C545    TXA                     
C546    PHA                ;save onto stack
C547    AND #$01           ;check if the countdown is at an even number
C549    BEQ $C550          ;if so, allow the refill sound to play
C54B    LDA #$13           ;(I did this ^ to prevent the refill sound from sounding weird)
C54D    JSR PlaySound           
C550    LDA #$02                 
C552    LDX $A0            ;retrieve the item that was actually used (brown potion or red potion)
C554    NOP                     
C555    JSR $FE06               

FE06    CPX #$11             ;if brown potion, skip to the mana part.   
FE08    BEQ $FE10               
FE0A    JSR AddHealthPoints     
FE0D    JMP $FE13               
FE10    JSR AddMana             
FE13    JSR $DC46              ;do something?
FE16    JSR $CA25              ;do a frame of refill 
FE19    JSR $CBA8               
FE1C    JSR $CA25              ;do another frame of refill 
FE1F    JSR $CBA8               

C558    LDA $A0               ;again check which item was used   
C55A    CMP #$11              ;check if brown potion   
C55C    BNE $C563             ;skip to health part if not
C55E    LDA ManaPoints       
C561    BCS $C566               
C563    LDA HealthPoints         
C566    STA $B0               ;store current mana/health (whichever one is refilling) into B0   
C568    NOP                     
C569    NOP                     
C56A    NOP                     
C56B    NOP                     
C56C    PLA                     
C56D    TAX                     
C56E    LDA $B0                 
C570    NOP                     
C571    CMP #$50           ;if the amount of mana/health reached max then exit, else loop.     
C573    BCS $C578               
C575    DEX                     
C576    BNE $C545               
C578    RTS                     

Fire Crystal:
Code: [Select]
C48B    LDA EquippedItem         
C48E    JSR $FE60               

FE60    ASL A                   
FE61    TAY                     
FE62    CPY #$22    ;check if item used * 2 is 22 (brown potion)
FE64    BNE $FE69   ;exit if not (will exit because fire crystal is not)
FE66    LDY #$20
FE68    CLC                     
FE69    RTS

C491    NOP                     
C492    BCS $C49C   ;if the item index used is too high then exit
C494    LDA $C49E,Y ;get low byte of location to jump to based on item used (fire crystal in this case)
C497    PHA         ;push onto the stack
C498    LDA $C49D,Y ;get high byte of location to jump to based on item used (fire crystal in this case)
C49B    PHA         ;push             
C49C    RTS         ;pull the two bytes from the stack and jump there.


FE23    LDA #$80     ;index of message to show (red potion because I dont know how to make a new text)           
FE25    JSR ShowMessage           
--------data block--------
FE28  .db $0C $41 $82         
FE2B    LDX #$07     ;loop through the 8 enemies that could possibly be on the screen
FE2D    LDA $02CC,X  ;Check if the current enemy's ID is FF           
FE30    CMP #$FF                 
FE32    BEQ $FE44    ;skip to the next loop if it is.
FE34    STX $A0      ;store the current loop index.
FE36    TXA                     
FE37    STA $0378    ;set CurrentEnemyToHandle to the current loop index.           
FE3A    LDA #$27     ;amount of damage to deal
FE3C    STA $00      ;used by subroutine below.
FE3E    JSR $8891    ;This subroutine handles damage dealing. I jump into the middle of it.
FE41    LDA $A0      ;retrieve current loop index.
FE43    TAX                     
FE44    DEX                     
FE45    BPL $FE2D               
FE47    JSR $C4BF    ;Remove fire crystal from inventory
FE4A    RTS                     

You can play around with my progress so far by downloading the patch here:
I think this one is just for the fire crystal but it might also have all the other changes... I haven't been good at keeping track.
You have to first apply umaggot's faxanadu restoration v1.04 on a japanese faxanadu rom and then apply this patch.

Gaming Discussion / Teehee Valley theme on new keyboard
« on: December 19, 2018, 12:39:02 am »
I just bought a new keyboard for myself and I'm really liking it!!
It's got a sequencer and looper, which I wanted to learn how to use through practice. It turns out Teehee Valley was on my mind, and it was my practice song!

Here it is. It's missing a part of the song because I was going from memory and didn't care about accuracy. Just doing it to learn my new KB.
Teehee Valley using new keyboard

I tweaked some of the tones (panflute and nylon guitar), then played each track and looped the appropriate parts. Oh and I quantized the notes. It was so much fun! I find DAWs to be complicated, so I'm happy the built-in sequencer on this keyboard is good enough for what I want to do.

Just thought any M&L SSS fans might like it :)

ROM Hacking Discussion / zelda 2 ASM hacking and improvements
« on: February 05, 2018, 10:20:28 pm »
A few years ago I tried to do an asm hack that would alleviate the pain of being sent back to the beginning after you lost all your lives. It was my first time doing any sort of assembly, so it had a few flaws that would mess up the collectible items.

Recently I had a good reason to work on version 2.0: It was requested by hollowshadow for his new hack.

So here it is. It doesn't have any unwanted side effects! (at least I'm 95% sure...)

Here is the code for anyone interested.

Code: [Select]
Asterisk * means I added this section or modded the instruction.

07:CAD0 (01CAE0)
JSR $AB10*
00: AB10 (002B20)*
LDA $707 ; current world
07:CAD3 (01CAE3)
CMP #$03* ; if > 3
BCS $CADE ; goto the jsr below
LDA #$00
LDY #$01
JMP $CAF0 ; jump to ~~label 1~~
JSR $AB14*
00:AB14 (002B24)*
LDA $706 ; region
ASL ; *2
ASL ; *2
ADC $707 ; +world
ADC $748 ; +area_index
SBC #$34 ; -52
LDA $AB30,X ; @ AB33, AB34, AB36, AB38, AB3B, AB3D, or AB3F
STA $561 ; set scene index
JMP $C358

07:C358 () ; (built-in) reset lives and other paramaters.
LDA #$03
STA $700
INC $760
INC $76C
07:CAE1 ()
LDA #$00
STA $701
STA $75C
LDA #$01
LDY #$02
~~label 1~~
STA $76C
STY $75F

the end.

Personal Projects / Zelda II Boss Endurance
« on: January 11, 2017, 12:52:28 pm »
This hack is meant to be like Boss Endurance from the kirby games.

Use your level ups strategically and beat the first 4 bosses in an order that works best for you, then use your remaining strength to defeat the last 4 bosses.

You have 1 life
Level ups cost less so you'll be somewhere around the appropriate levels for each boss
Magic and Life do not refill when you level up
You cannot save until you beat the game
You have every spell except Fairy
You can get the down thrust technique after beating 2 bosses (It's blocked by 2 locked doors)
There are 2 red jars: First one in a cave behind 1 locked door, second one just before thunder bird

Some other changes could be made for the title screen but it's fine for now.

version 0.6

Try it out and leave a comment :)

Here is the chart of level up point requirements if you want to plan it out:

Personal Projects / My Zelda 2 Editors - Released
« on: October 19, 2016, 11:36:44 am »

Finally I've completed the editors! Well, nothing's really ever finished, but they're good enough to be released.

level-up editor:

When you change a value, the displayed number in the level-up dialogue and actual value both get changed automatically.
(If you used a hex editor to change the actual value, the displayed number wouldn't change.)

dialog editor:

All the townsfolk dialog pointers in the game are accessible. (not title screen / ending text)
You can change the pointers easily.
Text can be changed with keyboard input or by clicking on a symbol from the game's default tile set.
You can change the text speed.
Includes a previewer so you can see how the text would look in the game.
You have full access to the bank which holds the text, so you can make text longer and relocate dialogs to unused areas.

(There used to be an older dialog editor that I made but it sucked.)

overworld editor:
download update

You can easily edit the maps with a Paint-like interface.
You can change every property of the warp areas, and move them by drag and drop.
You can change the raft locations (in the newest unreleased version).
It tells you all of a cave's connections when you select a cave area.
Quick Test allows you to start the game from anywhere on the map so you can test things very easily.
You can change the palace rock locations.
Includes a user manual that tells you about some of the game's mechanics.

sideview editor:

You can change all terrain data.
You can move objects by drag-and-drop. The editor automatically rearranges them.
You can change all enemy data through drag-and-drop.
You can change object types with the radio buttons.
A map lets you see all the room connections stemming from the current one (good for palaces).
You can see a list of every scene that shares a terrain or enemy layout.
Spawn bit checkboxes allow you to control which scenes allow a collectible item to appear in a given section.
You can insert and delete objects into scenes, including collectible items, without messing up anything else.
You can create entirely new terrain layouts from scratch by specifying how many terrain objects you need. New space will be allocated accordingly.
You can change the required palace items without messing up the "turning to stone" events.
Right-click on townsfolk to change their dialog index (Use the dialog editor for actual text editing and reference)
Quick Test lets you immediately jump to the scene you're editing in an emulator to test it out.
Includes a user manual that gives you a lot of insight into how the game puts the sideview together.

Read the user manual or you won't know what you're doing!

The only downside is that the graphics in the editors are rips and don't change.

I've tried to make these editors easy to use by automating a lot of low-level tasks, making friendly guis, including help files, and (my favourite feature) making Quick Test.

Personal Projects / Nick + Andy Love Story (Binary Land hack)
« on: June 25, 2016, 10:24:39 am »
The LGBT thread started by 6paklover (which has now gone off the wall) gave me the motivation to make a hack poking fun at me and Andrew's fear of spiders.

What's New
-Graphics represent Andrew and I
-New Music!
-Always in "Love Story" mode

Me and Andrew are wimpy little sh*ts when it comes to insects... He'll jump on a chair and I'll kill the thing but be all panicky while doing it. This game is for us to poke fun at ourselves, and for you all to enjoy some new music in the game! (and graphics too)

We navigate through the mazes bravely killing spiders wherever necessary

Depends how you interpret "brave"...

We help each other in need

And we find each other in the end, which gives us the strength to keep going!

The new music is written by me. It sounds like you're on a fantasy ride at the carnival or something but I still like it :P

patch to Binary Land (J) [!]
Download Link!

Pages: [1]