Hello all,
I have been working on doing enhanced graphics for shinobi since January and have released a first version which has updated textures in mission backgrounds.
The reason i am posting here is because i am searching for an experienced coder in ASM that could perform a hack in order to give me more space to work and create more accurate arcade like graphics on the CPC.
How this could be done?
I will describe how the game works now, and then what would be the modification:
The game has 4 missions, and each mission consists of 3-4 stages.
The map of each stage has the naming: <XX>.bin, where <XX> stands for <mission number><stage number>
The game has one tileset per mission. naming is : CHITES<X>.bin where <X> stands for mission number.
The game allocates 64 tiles for each mission. All graphics for the stages of a mission share these 64 tiles.
Currently the flow in code is something like this:
1. mission 1 start
2. load CHITES1.BIN
3. load 11.BIN
player finishes stage 1
4. load 12.BIN
player finishes stage 2:
5. load 13.BIN
player finishes mission 1 and bonus stage:
1. mission 2 start
2. load CHITES2.BIN
3. load 21.BIN
and so on.
The idea here is to load a different tileset before each STAGE, at the same address location as the original game did, overwriting previous stage tileset contents. Thus no additional RAM is required.
With this mod, we will be able to have 64 tiles per STAGE, which are enough to produce closer to arcade graphics.
So from my side i will create 19 CHITES<XX>.bin, where <XX> stands for <mission number><stage number>
The hack in the code would be so that this flow will be implemented, marked with red font:
1. mission 1 start
2. load CHITES11.BIN (rename CHITES1 to CHITES11.BIN)
3. load 11.BIN
player finishes stage 1
mod addition: load CHITES12.BIN (addition of a new loader here)
4. load 12.BIN
player finishes stage 2:
mod addition: load CHITES13.BIN (addition of a new loader here)
5. load 13.BIN
player finishes mission 1 and bonus stage:
1. mission 2 start
2. load CHITES21.BIN (rename CHITES2 to CHITES21.BIN)
3. load 21.BIN
etc
The advantages of utilizing 64 tiles per stage are more than visible. Take as an example the attached screenshot:
For the red wall and the window, in order to match the arcade style, i had to use 27 tiles.
This can not be done if we have 64 tiles for the whole mission!
What do you think about the this hack? Does anyone know if this is feasible ?
regards,
Faidon
There is no reason this couldn't be doable. If you need FDC code to load AMSDOS file without the system, check the Arkos website in my signature and check the FDC Tools I did. The sources are in a DSK (old school...) but if you have trouble extracting them, contact me and I'll send you the Winape compatible sources.
Thanks Targhan, i will check this out.
I need to load specific files at specific conditions are met \
e.g. if player finishes stage 2 and goes to stage 3 of mission 4, then load chites43.bin
i will check this but in the meantime if anyone with more knowledge is available please communicate with me!
Shouldn't be too hard, I guess the "mission 1/2/3..." intermission screen is the ideal place to load your new tile. Sorry I can't help you on this, I'm already working on something that requires my full attention!
Oh sorry I didn't notice the game was already loading the files (I though all was in memory already). So you shouldn't need my FDC tools :).
i need to find a place large enough to write a command to load chites.bin before each stage - more precisely in stages 2 3 and 4 on each mission - , This load will be done exactly the same way it is already done on each mission start , in the first stage of every mission start.
Thia may sound easy for experiences coders in ASM but i cannot do it.
One possibility is to include some code IN one of the loaded file (at the end for example!)
maybe it is enough to change the pointer to the file name and instead of taking the value from register a, the value from register hl as with the xx.map files (?) so that chitesx.bin becomes chitesxx.bin
However, since the number in the file name is checked at various points, it may be necessary to move the pointer one byte forward to 0xb783 resulting in file name of chitexx.bin.
As the Filenames are altered here, from:
LAB_ram_1702 XREF[1]: ram:16ef(j)
ram:1702 f3 DI
ram:1703 cd8b18 CALL SUB_ram_188b
ram:1706 3284b7 LD (DAT_ram_b784),A ; = 58h X -> Number in CHITESX .BIN
ram:1709 2289b7 LD (DAT_ram_b789),HL ; = 58h X -> Number of .MAP
ram:170c c35212 JP LAB_ram_1252
To: LAB_ram_1702 XREF[1]: ram:16ef(j)
ram:1702 f3 DI
ram:1703 cd8b18 CALL SUB_ram_188b
ram:1706 2284b7 LD (DAT_ram_b784),HL ; = 58h X
ram:1709 2289b7 LD (DAT_ram_b789),HL ; = 58h X
ram:170c c35212 JP LAB_ram_1252
Maybe LAB_ram_1702 XREF[1]: ram:16ef(j)
ram:1702 f3 DI
ram:1703 cd8b18 CALL SUB_ram_188b
ram:1706 2283b7 LD (DAT_ram_b783),HL ; = 58h X
ram:1709 2289b7 LD (DAT_ram_b789),HL ; = 58h X
ram:170c c35212 JP LAB_ram_1252
ram:b77e 43 ?? 43h C ram:b77f 48 ?? 48h H
ram:b780 49 ?? 49h I
ram:b781 54 ?? 54h T
ram:b782 45 ?? 45h E
ram:b783 53 ?? 53h S
DAT_ram_b784 XREF[2]: ram:1153(*), ram:1706(W)
ram:b784 58 ?? 58h X
ram:b785 20 ?? 20h
ram:b786 42 ?? 42h B
ram:b787 49 ?? 49h I
ram:b788 4e ?? 4Eh N
DAT_ram_b789 XREF[1]: ram:1709(W)
ram:b789 58 ?? 58h X
DAT_ram_b78a XREF[1]: ram:112c(*)
ram:b78a 58 ?? 58h X
ram:b78b 20 ?? 20h
ram:b78c 20 ?? 20h
ram:b78d 20 ?? 20h
ram:b78e 20 ?? 20h
ram:b78f 20 ?? 20h
ram:b790 20 ?? 20h
ram:b791 4d ?? 4Dh M
ram:b792 41 ?? 41h A
ram:b793 50 ?? 50h P
Very nice Fessor, thank you!
This is the most elegant way as you proposed: just copy bin number to chites and overwrite letter 'S' and <x>
from CHITES<X>.bin
Which program did you use for the dissasembly that creates these useful ref labels (DAT_ram_b784 )[size=78%]? [/size]
I just hit pause on winape, which has no labels are generated.
A new person joins the credits section :)
Quote from: Fmtrx on 09:48, 14 March 20
Which program did you use for the dissasembly that creates these useful ref labels (DAT_ram_b784 )[size=78%]? [/size]
I just hit pause on winape, which has no labels are generated.
I'm using ghidra. https://ghidra-sre.org/
great! thank you!
And if you fear installing a 1GB java NSA developed application, you can have a go at yazd ;)
https://github.com/toptensoftware/yazd
Quote from: gerald on 12:56, 14 March 20
And if you fear installing a 1GB java NSA developed application, you can have a go at yazd ;)
https://github.com/toptensoftware/yazd (https://github.com/toptensoftware/yazd)
:laugh:
I imagine the following hair rising dialogue..NSA security officer: Boss we have an alert from this IP, this guy named Fmtrx, seems a notorious hacker, and is up to something.Chief of NSA: alright, may i have your attention all of you, i want a full report, we must prepare ourselves for an incoming security breach!tell us, is he hacking social security numbers?NSA security officer: no Sir.Chief of NSA: Is he trying to manipulate missiles and cause a world war?NSA security officer: no SirChief of NSA: Is he hacking white office secrets?NSA security officer: again No SirChief of NSA: Will you bloody tell me what is he doing ?NSA security officer: he is ... he is doing a remaster of shinobi game Sir!Chief of NSA: OH GOD! This is more serious than i thought! ALERT ALERT! CODE 5 RED! Everybody out of this room! Get yourself a day off and download shinobi remaster and leeeeet's play! I want your reports by tomorrow morning. :D
Quote from: Fmtrx on 13:30, 14 March 20
:laugh:
I imagine the following hair rising dialogue..
NSA security officer: Boss we have an alert from this IP, this guy named Fmtrx, seems a notorious hacker, and is up to something.
Chief of NSA: alright, may i have your attention all of you, i want a full report, we must prepare ourselves for an incoming security breach!
tell us, is he hacking social security numbers?
NSA security officer: no Sir.
Chief of NSA:Is he trying to manipulate missiles and cause a world war?
NSA security officer: no Sir
Chief of NSA:Is he hacking white office secrets?
NSA security officer: again No Sir
Chief of NSA:Will you bloody tell me what is he doing ?
NSA security officer: he is ... he is doing a remaster of shinobi game Sir!
Chief of NSA:OH GOD! This is more serious than i thought! ALERT ALERT! CODE 5 RED! Everybody out of this room! Get yourself a day off and download shinobi remaster and leeeeet's play! I want your reports by tomorrow morning. :D
I would more worried of Oracle layers army once they found out you've used Java for doing the remaster ;D
:D
jokes aside, this ghidra tool from what i saw after a quick view is very powerful and one has to read the manual to explore all of its features.
Great tool.