News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_AMSDOS

Mr. Wong's Loopy Laundry

Started by AMSDOS, 07:41, 20 September 11

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

AMSDOS

I've added some pokes for Mr. Wong's Loopy Laundry using the Hacker Type-in from AA43 and uncovered a couple of other interesting pokes which make the game easier. The main ones are Infinite Lives and Infinite Spray.

Unfortunately even with the Infinite Spray enforced the game is still rather hard due to the fact if you spray one of the monsters, you cannot spray again until the spray has worn off on that affected monster, which seems unfair given you've got spray to shoot, though cannot. I'm thinking this would require more than a simple poke to be able to spray at will.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

tastefulmrship

#1
Quote from: CP/M User on 07:41, 20 September 11
I'm thinking this would require more than a simple poke to be able to spray at will.
Looking at the code, it *should* be a simple &C9 in the right place... and I'm still looking for that right place. The CHEAT MODE poke for INFINITE SPRAYs doesn't seem to work, as it changes the wrong address.


In the meantime, here are some proper working CHEATS for this game;


Load WONGS.BAS into memory and add the following lines as required;

10020 POKE &5ECC,&00                          (Infinite lives)
10030 POKE &5EC2,&C9                          (Invulnerability)
10040 POKE &5FA2,&00                          (Infinite sprays)

AMSDOS

Quote from: tastefulmrship on 09:53, 20 September 11
Looking at the code, it *should* be a simple &C9 in the right place... and I'm still looking for that right place. The CHEAT MODE poke for INFINITE SPRAYs doesn't seem to work, as it changes the wrong address.

Hmmm, well the poke I've provided for Infinite Spray is certainally working as it would with my copy of Wongs. It appears AA got their methods mixed up, since the Hacker program is suggesting it's:


LD HL,xxxx
DEC (HL)
 

for option 2, it should be:


LD A,(xxx)
DEC A
LD (xxx),A


AAs fault for mixing it up!  :(  Otherwise my POKE is working fine here. The routine at &5FA6 does a CALL to &5FD2 with a condition on Z. Followed by a CALL to &5F5A - it seems to be in this bit where I think shooting takes place cause if I disable that I cannot shoot at all. Going into that takes you into several routines, to which I haven't found the approriate one, I'm guessing there will be a condition associated with a timing delay for when the monster is revived.

QuoteIn the meantime, here's INVULNERABILITY, even if you don't want it;

MEMORY &3FFF
LOAD "WONG127 .BIN",&4000
POKE &5EC2,&C9                          (when a collision is detected, this simply stops the code from continuing)
CALL &7E54

Yeah it's always nice to have Invulnerability if you really want to cheat seriously! I'd just like to have on restrictions on the spray!  :)
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

tastefulmrship

#3
Ok, the INFINITE SPRAYS cheat on CPCWIKI is the one that's not working.

Revise that, it's me that's not working! I typed the address down as 5F42 instead of 5FA2! As the great philosoper, Homer would say; "D'oh!"




The code at 5F5A just displays the spray graphic (5, 4, 3, 2 & 1)

AB5F - Spray Number!

5F5A - Display SPRAY Number
5F82 - Define SPRAY Number at beginning of game
5F97 - Check if SPRAY is zero.
5FA2 - Decrement SPRAY number.

AMSDOS

Quote from: tastefulmrship on 10:59, 20 September 11
Ok, the INFINITE SPRAYS cheat on CPCWIKI is the one that's not working.

Revise that, it's me that's not working! I typed the address down as 5F42 instead of 5FA2! As the great philosoper, Homer would say; "D'oh!"




The code at 5F5A just displays the spray graphic (5, 4, 3, 2 & 1)

AB5F - Spray Number!

5F5A - Display SPRAY Number
5F82 - Define SPRAY Number at beginning of game
5F97 - Check if SPRAY is zero.
5FA2 - Decrement SPRAY number.

I have this JP at the end of the code from 5F5A which points to 4155, if I disable that, then the spray graphic definitely disappears, though I can still spray, where if I do a C9 at the call to 5F5A then I cannot spray at all, though it maybe cause it hasn't initialised a value. The program will also flash up spray squares as if you were out of spray, though this still doesn't allow me to spray even after I've collected those squares!  ;D
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

tastefulmrship

#5
&47DB is the start of the SPRAY routine, by the looks of it. If you remove &47E0, &47E1 &47E2 (JR NZ,&4813) you get an interesting effect where you are constantly spraying. You can disable both monsters, but neither return to a moving state.

EDIT: Yeah, scrub that one, too! It's linked to the death routine!

EDITn: (I've lost count how many times I've edited this post!) Anyway, routine at &4B96 stops monster and makes you invulnerable to it and routine at &4807 resumes it! Looking for routines that CALL/JP &4B96!

Gryzor


AMSDOS

Quote from: tastefulmrship on 11:27, 20 September 11
&47DB is the start of the SPRAY routine, by the looks of it. If you remove &47E0, &47E1 &47E2 (JR NZ,&4813) you get an interesting effect where you are constantly spraying. You can disable both monsters, but neither return to a moving state.

EDIT: Yeah, scrub that one, too! It's linked to the death routine!

EDITn: (I've lost count how many times I've edited this post!) Anyway, routine at &4B96 stops monster and makes you invulnerable to it and routine at &4807 resumes it! Looking for routines that CALL/JP &4B96!

Yesterday when I looked at where that JR NZ,&4813 points to, there were two calls further into that routine. I've isolated the second CALL as being the one which has the effect on the monsters - i.e. Shoot the Monsters and they perminantly stay there - the routine there was simply the Accumulator with 0 in it and it was poking that value into 3 other addresses, which I think relate to the Monsters. Sadly, what happens is you spray the monster and when it stops, you still cannot spray again, but in this case when the spray disappears from the monster though the monster remains in that position, you can spray again - until you hit the 2nd and 3rd monster. Initially I was unsure if a simple poke would allow me to spray at will, I'm still unsure cause what seems to happen is You shoot - if no monster present (deduct one 1 spray), you can shoot again, if you hit a monster, that monster goes into pause move and of course you can move through it without loosing a life, once the time period has worn off (about 15 or 20 seconds I think), monster is active again and you can shoot once more. Perhaps there's a whole series of processes you can do while that monster is stationary, though spraying another isn't one of them which is a pity. I'm just unsure if it's a simple conditional jump or call which prevents this while one monster is stationary or if slabs of code has to be written to allow that process to happen.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

AMSDOS

Quote from: Gryzor on 14:10, 20 September 11
Mr. Who's What??

No?

It was in AA1 along with another 129 games! Check them all out on Page 5.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

tastefulmrship

#9
Quote from: CP/M User on 09:34, 21 September 11
No?
It was in AA1 along with another 129 games! Check them all out on Page 5.
Page 82, right-hand column... 52%
http://cpcoxygen.fxwebdevelopment.com/aa_depot/001JS.html



(Day 2) I'm going to start removing procedures until I can isolate which one stops you from firing when a monster is 'starched' as it seems as if all the CALLs & JRs associated with AB3E (fire button captured at &74CD) continue to be processed; there's nothing (I can see) that doesn't happen... unless something in the main-loop routine at &69C8 has an error and you ARE supposed to be able to fire when a monster is starched?!?


EDIT#1:
Indeed, the routine &47DB is where the MONSTER STATUS (&AB46; the 'frozen monster' counter) is checked against the FIRE being pressed. (That JR NZ,&4813 is the offending item) The next JP to &5F91 checks for FIRE being pressed, which is being bypassed if &AB46 is not zero.
New code might have to be written to cope with a second monster in the 'frozen' state, as currently only one counter is being used... which means a seond monster starched would only be starched until the first was unfrozen (unstarched?) when both (or all three) would resume... but you already know all that.


EDIT#2:

Here's a VERY crude example of the above problem;

org &47db

ld a,(&ab46)
cp &00
call nz,&4813
jp &5f91
call &7c0b
ld hl,(&ab1d)
ld a,(&ab21)
cp &00
jr nz,addr47f8
ld bc,&1200
add hl,bc
jr addr4807
.addr47f8
ld a,(&ab21)
cp &01
jr z,addr4802
jp &5f14
.addr4802
jp &4826
.addr4807 equ &4807

org &5fa2
nop

(Load WONG127.BIN to &4000, assemble the above code in MAXAM or WinAPE and CALL &7E54)

... which allows you to fire, even when a MONSTER is STARCHED. However! If you fire again and miss, the MONSTER resumes. If you fire again and hit another MONSTER, the second MONSTER is also STARCHED and the counter goes back to A0... meaning both are STARCHED for the duration of the timer, and both resume once it hits zero.
I have included the INFINITE STARCH cheat, as the 'revised' code tends to deplete STARCH almost instantly!

Gryzor

Hahaha!

I'm sorry, I'm finding it quite amusing wasting time and effort on such a title... :D

redbox

Quote from: Gryzor on 16:19, 21 September 11
I'm sorry, I'm finding it quite amusing wasting time and effort on such a title... :D


It's a great way to learn Z80, so always worth it!

AMSDOS

Quote from: tastefulmrship on 12:15, 21 September 11
Page 82, right-hand column... 52%
http://cpcoxygen.fxwebdevelopment.com/aa_depot/001JS.html



(Day 2) I'm going to start removing procedures until I can isolate which one stops you from firing when a monster is 'starched' as it seems as if all the CALLs & JRs associated with AB3E (fire button captured at &74CD) continue to be processed; there's nothing (I can see) that doesn't happen... unless something in the main-loop routine at &69C8 has an error and you ARE supposed to be able to fire when a monster is starched?!?


EDIT#1:
Indeed, the routine &47DB is where the MONSTER STATUS (&AB46; the 'frozen monster' counter) is checked against the FIRE being pressed. (That JR NZ,&4813 is the offending item) The next JP to &5F91 checks for FIRE being pressed, which is being bypassed if &AB46 is not zero.
New code might have to be written to cope with a second monster in the 'frozen' state, as currently only one counter is being used... which means a seond monster starched would only be starched until the first was unfrozen (unstarched?) when both (or all three) would resume... but you already know all that.


EDIT#2:

Here's a VERY crude example of the above problem;

org &47db

ld a,(&ab46)
cp &00
call nz,&4813
jp &5f91
call &7c0b
ld hl,(&ab1d)
ld a,(&ab21)
cp &00
jr nz,addr47f8
ld bc,&1200
add hl,bc
jr addr4807
.addr47f8
ld a,(&ab21)
cp &01
jr z,addr4802
jp &5f14
.addr4802
jp &4826
.addr4807 equ &4807

org &5fa2
nop

(Load WONG127.BIN to &4000, assemble the above code in MAXAM or WinAPE and CALL &7E54)

... which allows you to fire, even when a MONSTER is STARCHED. However! If you fire again and miss, the MONSTER resumes. If you fire again and hit another MONSTER, the second MONSTER is also STARCHED and the counter goes back to A0... meaning both are STARCHED for the duration of the timer, and both resume once it hits zero.
I have included the INFINITE STARCH cheat, as the 'revised' code tends to deplete STARCH almost instantly!

I like it, is it possible to make the spray disappear if it's a miss cause it just messes up the screen? The spray seems to be very touchy, guess there was a short delay burst when Fire was pressed. Otherwise having the monsters come two at the same time is fine, sort of like Pacman in a way when you eat all the ghosts and they have to go back to their hut.


Quote from: Gryzor on 16:19, 21 September 11
Hahaha!

I'm sorry, I'm finding it quite amusing wasting time and effort on such a title... :D

What you'd rather have me waste time with bla bla bla on your forum, poke about on Twitter and watching DVDs? That's real productive!  :o
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Metr

Quote from: Gryzor on 16:19, 21 September 11
Hahaha!

I'm sorry, I'm finding it quite amusing wasting time and effort on such a title... :D


It's a great title and a must have ! Also so educative, you can get used to the evil dangers of doing your own laundry :D

Gryzor


tastefulmrship

Quote from: CP/M User on 09:21, 22 September 11
I like it, is it possible to make the spray disappear if it's a miss cause it just messes up the screen? The spray seems to be very touchy, guess there was a short delay burst when Fire was pressed. Otherwise having the monsters come two at the same time is fine, sort of like Pacman in a way when you eat all the ghosts and they have to go back to their hut.
Without re-writing that whole routine, no, sorry. But the weekend is coming up and I can't be arsed converting EVEN more C64 music to CPC, so I can have a look at it then if you like... unless someone else has two minutes to spare?!?

AMSDOS

Quote from: tastefulmrship on 13:15, 22 September 11
Without re-writing that whole routine, no, sorry. But the weekend is coming up and I can't be arsed converting EVEN more C64 music to CPC, so I can have a look at it then if you like... unless someone else has two minutes to spare?!?

Only if it's not a hassle, hate putting people out of their way for nothing.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Powered by SMFPacks Menu Editor Mod