-
Posts
596 -
Joined
-
Last visited
Reputation Activity
-
Norman Sword got a reaction from jetsetdanny in [File] Manic 40 Miner
The wording
This means this version contains 40 caverns, starting with the original 20 caverns, then continuing on with another 20 caverns originally desisigned by Ligan. (of those 20 caverns, some have been redesigned by me)
was added to the main description
-
Norman Sword got a reaction from Spider in [File] Manic 40 Miner
The wording
This means this version contains 40 caverns, starting with the original 20 caverns, then continuing on with another 20 caverns originally desisigned by Ligan. (of those 20 caverns, some have been redesigned by me)
was added to the main description
-
Norman Sword got a reaction from IRF in [File] Manic 40 Miner
The wording
This means this version contains 40 caverns, starting with the original 20 caverns, then continuing on with another 20 caverns originally desisigned by Ligan. (of those 20 caverns, some have been redesigned by me)
was added to the main description
-
Norman Sword got a reaction from IRF in Manic Miner: The Lost Levels
The above pokes - demystified into actual Z80 code
opcode address address comment
hex #8F85 decimal 36741 ; note:- listed one byte earlier
call #90fe ;#cd,#fe,#90 ; the original call to the score routine
changed to
call #9352 ;#cd,#52,#93 ;205,82,147 ; note:- the call opcode is included here
this routine is a copy of the Item collect sound in Jet Set Willy
opcodes ;address ;address
; ; hex ; decimal
; ;#9352 ;37714
ld a,(#8073) ;#3a,#73,#80 ;58,115,128 ; get border colour
ld c,#80 ;#0e,#80 ;14,128 ; set loop counter (duration)
sfx:
out (#fe),a ;#d3,#fe ;211,254 ; set border + ear + mic
xor #18 ;#ee,#18 ;238,24 ; toggle ear + mic bits
ld e,a ;#5f ;95 ; save the border + ear + mic state in {e}
ld a,#90 ;#3e,#90 ;62,144 ; calculate a pitch
sub c ;#91 ;145
ld b,a ;#47 ;71 ; the calculated pitch to {b}
ld a,e ;#7b ;123 ; restore border + ear + mic back from {e} to {a}
sfx_loop:
djnz sfx_loop ;#10,#fe ;16,254 ; loop (delay) for the pitch
dec c ;#0d ;13 ; decrease the time counter
dec c ;#0d ;13
jr nz,sfx ;#20,#f0 ;32,240 ; keep looping till out of time, {c}=0
jp #90fe ;#c3,#fe,#90 ;195,254,144 ; jump to the score routine
Addendum.
the JSW sound routine uses absolute address's for picking up the border colour. The actual routine uses relative jumps thoughout. This means this routine can be placed at any address, without having to change any of the routines data. The only change would be calculating the actual address that the routine sits at.
Addendum 2
A re-write can shorten the above 24 byte routine by 3 bytes. (I have not listed the re-write)
-
Norman Sword got a reaction from Spider in Manic Miner: The Lost Levels
The above pokes - demystified into actual Z80 code
opcode address address comment
hex #8F85 decimal 36741 ; note:- listed one byte earlier
call #90fe ;#cd,#fe,#90 ; the original call to the score routine
changed to
call #9352 ;#cd,#52,#93 ;205,82,147 ; note:- the call opcode is included here
this routine is a copy of the Item collect sound in Jet Set Willy
opcodes ;address ;address
; ; hex ; decimal
; ;#9352 ;37714
ld a,(#8073) ;#3a,#73,#80 ;58,115,128 ; get border colour
ld c,#80 ;#0e,#80 ;14,128 ; set loop counter (duration)
sfx:
out (#fe),a ;#d3,#fe ;211,254 ; set border + ear + mic
xor #18 ;#ee,#18 ;238,24 ; toggle ear + mic bits
ld e,a ;#5f ;95 ; save the border + ear + mic state in {e}
ld a,#90 ;#3e,#90 ;62,144 ; calculate a pitch
sub c ;#91 ;145
ld b,a ;#47 ;71 ; the calculated pitch to {b}
ld a,e ;#7b ;123 ; restore border + ear + mic back from {e} to {a}
sfx_loop:
djnz sfx_loop ;#10,#fe ;16,254 ; loop (delay) for the pitch
dec c ;#0d ;13 ; decrease the time counter
dec c ;#0d ;13
jr nz,sfx ;#20,#f0 ;32,240 ; keep looping till out of time, {c}=0
jp #90fe ;#c3,#fe,#90 ;195,254,144 ; jump to the score routine
Addendum.
the JSW sound routine uses absolute address's for picking up the border colour. The actual routine uses relative jumps thoughout. This means this routine can be placed at any address, without having to change any of the routines data. The only change would be calculating the actual address that the routine sits at.
Addendum 2
A re-write can shorten the above 24 byte routine by 3 bytes. (I have not listed the re-write)
-
Norman Sword got a reaction from jetsetdanny in Manic Miner: The Lost Levels
The above pokes - demystified into actual Z80 code
opcode address address comment
hex #8F85 decimal 36741 ; note:- listed one byte earlier
call #90fe ;#cd,#fe,#90 ; the original call to the score routine
changed to
call #9352 ;#cd,#52,#93 ;205,82,147 ; note:- the call opcode is included here
this routine is a copy of the Item collect sound in Jet Set Willy
opcodes ;address ;address
; ; hex ; decimal
; ;#9352 ;37714
ld a,(#8073) ;#3a,#73,#80 ;58,115,128 ; get border colour
ld c,#80 ;#0e,#80 ;14,128 ; set loop counter (duration)
sfx:
out (#fe),a ;#d3,#fe ;211,254 ; set border + ear + mic
xor #18 ;#ee,#18 ;238,24 ; toggle ear + mic bits
ld e,a ;#5f ;95 ; save the border + ear + mic state in {e}
ld a,#90 ;#3e,#90 ;62,144 ; calculate a pitch
sub c ;#91 ;145
ld b,a ;#47 ;71 ; the calculated pitch to {b}
ld a,e ;#7b ;123 ; restore border + ear + mic back from {e} to {a}
sfx_loop:
djnz sfx_loop ;#10,#fe ;16,254 ; loop (delay) for the pitch
dec c ;#0d ;13 ; decrease the time counter
dec c ;#0d ;13
jr nz,sfx ;#20,#f0 ;32,240 ; keep looping till out of time, {c}=0
jp #90fe ;#c3,#fe,#90 ;195,254,144 ; jump to the score routine
Addendum.
the JSW sound routine uses absolute address's for picking up the border colour. The actual routine uses relative jumps thoughout. This means this routine can be placed at any address, without having to change any of the routines data. The only change would be calculating the actual address that the routine sits at.
Addendum 2
A re-write can shorten the above 24 byte routine by 3 bytes. (I have not listed the re-write)
-
Norman Sword got a reaction from Spider in [File] Jet-Set Willy II PC
Your cartography room shot, is missing the trip switch room/block. Which indicates it has not been registered as visited and also the item not collected.
-
Norman Sword got a reaction from jetsetdanny in [File] Jet-Set Willy II PC
Your cartography room shot, is missing the trip switch room/block. Which indicates it has not been registered as visited and also the item not collected.
-
-
Norman Sword reacted to DigitalDuck in Why was Manic Miner never properly optimised?
Manic Miner Redux supports many thousands of rooms.
(What? The original post never mentioned "Spectrum"...)
-
Norman Sword got a reaction from Spider in Why was Manic Miner never properly optimised?
Was not aware Matthew wrote any other versions. Ist line I wrote
Apologies to the original person who modified Matthews code. (see below)
-
Norman Sword got a reaction from Spider in Why was Manic Miner never properly optimised?
JSWED has NO optimisation of code/data space in Manic Miner. It is a very simple data editor. So my statement still stands.
-
Norman Sword got a reaction from Spider in Why was Manic Miner never properly optimised?
Apologies to the original person who modified Matthews code. (see below)
Last week I wondered why Manic Miner has been left languishing as a little used format for code change. It seems the vast majority of game edits use the 64 room game version of Jet Set Willy as the basics for new games, and Manic Miner seems to have, in the main, been ignored.
The limited scope of Manic Miner might be the reason, just 20 caverns, whilst JSW manages a max of 64 (on a 48k zx spectrum)
I wondered if it was or would be easy to write a piece of code that compacted the game slightly. I personally have no need for such gimmicks. If I need more space, I will just rewrite the code. A quick rewrite as demonstrated in Manic 40 Miner takes very little effort. But I task myself with just writing code for the sake of writing code so, how hard is a universal compaction piece of code for Manic Miner?
The answer is it took me a couple of hours to write a routine that compacted the game. It was at that point I delved into archives looking for versions to try my code on. That was when I discovered that the great multitude of Manic Miner versions I wanted to test my code on did not exist.
I modified Matthews original code with no problem.
I modified some other version - but that had no need of the addition I added (e.g. the font change)
I knew of a recent listed modification of Matthews Manic Miner and that was used as a basis for demonstrating what the code I wrote could do.
The version I decided to modify was Manic Person (human Version).
So included here is a demonstration of the game -- Manic Miner -- Modified by a simple (for me) piece of code that does basic code modifications to the game.
The demo does go a bit further and uses the freed space. The text added is deliberately long winded --- (it is just a demo of what can be done)
The included demo - will be deleted in a week. It is NOT a version that is available for general public release.
and has now been deleted ----- New code has been added (see addendum)- the new code is just the original Manic Miner
Let the demo play through to the final cavern and on---
Ending the post.
The universal code I wrote is in a format that will modify the basic code of Manic Miner and then return to Basic or Enter the modified game code and play the game.
That code is not included here.
The big question I ask myself is. Why has no one bothered to do this simple task? As stated elsewhere the code took just a few hours.
ADDENDUM.
Since this was missing a file demonstrating what I was talking about. A non edited version of Manic Miner has been run through my optimisation routine.
Wait until the end of the 20 caverns to be displayed in the demo mode. THE text is in addition to other optimisations that have been performed. Note - this program has not been edited to fix any other code- so the pause bug and any other original problems, may still exist.
MANIC-C.TAP
-
Norman Sword reacted to Spider in Playing around with the in-game tune in JSW
Nopping out #8B47 and #8B49 would do but its too fast then. So...
XOR A ;8B3C ; clear the inactivity timer at L85E0 LD (inactivity),A ;8B3D ;L85E0 LD D,A ;8B40 ; initialise the mSB LD a,(game ticker) ;8B41 ;L85CB the game ticker at 85CB AND 1 ;8B44 ; issolate odd or even game ticker bit LD HL,(ingame_music) ;8B46 ;L865F set HL to the music offset pointer LD E,(HL) ;8B49 ; get the present offset ADD A,E ;8B4A ; add the ticker (odd/even) value LD (HL),A ;8B4B ; store the updated offset NOP ; 8b4C ; back to the original code LD HL,ingame_music ;8B4D ;L865F ADD HL,DE ; 8B50 ; >>> HL IS POINTING AT THE NOTE value
-
Norman Sword reacted to IRF in Playing around with the in-game tune in JSW
Actually Andy, you might need to think again there. Did you actually try that out? Because looking at it again, E isn't actually updated when the tune note index is increased, so when DE is added to HL (the second definition of HL) at #8B50, it won't pick up the new note during the current pass through the Main Loop.
So you would need to use that spare, NOPped out byte at #8B4C for a LD E, A instruction.
Edit: Thinking about it, the effect of E not being updated straight away probably just means that the tune will be playing 'one note behind'. It should play at the right speed. But the first note (first pitch value) will only play half as long as it should when you start playing the game. (And the normal fix for that - setting the music note index to #FF during game initialisation - won't work this time; I think that would cause the last note of the tune to be played during the first pass through the Main Loop.)
-
-
Norman Sword got a reaction from Spider in [File] Manic Panic
I have added a graphic change for the final toilet run.
I added a blank item check into the code, and left it. A blank item will be filled with junk graphics. This makes blank items visible (in case a blank item crops up!)
Changed the title picture. That can now be aborted with "HJKL<enter>" or held on screen with "YUIOP"
Changed the screen display pause in attract mode . Held with "YUIOP" abort with "HJKL<enter>"
Items flash and item draw have been changed.
-----------------------------------------
MW-V1-1.tap
-
Norman Sword got a reaction from MtM in [File] Manic Panic
There is an update. Needed to circumvent another piece of the original data.
All rooms are numbered 0 to 63. Due to the way the original code uses or #c0 the top two bits are set to arrive at the room base address. My code does a simple calculation and indexes into an address list. Every room has data that follows the same format of being under 63 for the up/down/left/right exit. That is until we arrive at the corrupted data in the normally unreachable rooms. Matthews code does not care what data it is given it will always arrive at a room number that is effectively from #c000 to #ff00 stepping one page at a time for all 64 rooms. My code however will calculate the room number as defined and unfortunately due to the corrupt rooms will calculate the position of junk room data. A bit like the arrow problem. Once an illegal room has been visited, the game goes eh up sgshd egfgf noxt roosm. etc.
The update to fix the room problem also added updates to stop speed flicker/judder by inserting an optional frame sync. Which might be unobtainable on some keyboards. Due to the inability to properly scan multiple key combinations. --- Can/could switch the option, to <on> by defalut. At present it is <off> by default. Or I can change the key combinations or reduce the key combinations to only 2. --- At present set as <A> <S> <D>, which will also invoke pause. The screen will indicate that those keys are being pressed.(during game play) The status indicator for the sync being active or inactive is the colour of the letter <I> from the line <Items Collected ...
The colour is normaly the same as the end of the same line (blue) . When frame sync is active the colour will change from blue to Magenta. A side effect of frame sync is a reduction in speed. So typically the speed goes from
slowest (music + frame sync) 14.4
medium (music) 13.28
fast (no music+ frame sync) 12.7
fastest(no music+ no frame sync) 11.08.
The timing is my standard double room walk. The change in speed is the effect of rounding up frame times, when sync is applied. In some rooms it will seem to have little effect in others it will drop the game speed noticeably.
No graphic change to the program. Although the method of storing the room data has been changed.
------------------------------------
I spent a day writing a visual display of how I plan on compacting the data further. This program has the output files that it creates deleted. All 3 files need to be in the same directory. The two data files are the data files generated by 1) the key data 2) all 64 rooms .eg.g JSW from #c000 to #ffff.
This show the data being compacted by over 50% - Not quite good enough for what I want.
This has been posted before I have had the chance to append any files.
The files will be appended one by one
The picture shows the output of the program. (all values in hex)
1) the numeric value of each tile
2) the graphic output
3) Item positions (in pairs) the first value is the offset from the start of the room, the second value is where the data is in the key table
above 3) is the count of each tile (in present room) data at the end of the line is the new compressed tile index and the graphic colour
4) present sprite data
5) each tiles index as generated by checking previous room data
6) the list of acquired data - in colour if being a tile drawn in current room
7) vertical compression/ horizontal compression/ stored count/original
Lots of other data concerning compaction of room names etc.
MW-V1-1a.tap n_rooms2.zip
-
Norman Sword got a reaction from Spider in Pokes (Spectrum Version)
I will again state. It is possible to run Manic miner and return to basic. On returning to basic it will still be possible to poke the game and again enter MM ( and if needed keep on repeating the loop of running the game and returning to basic). All the basic that was in memory before running MM will still be there. Because certain members on here do not have the skill needed to do this does not preclude others from doing so. (e.g. I can if I wanted, do the modifications needed. But I have no intention of doing so. ) in the 30+ years since MM was written I have had no need to do so, and I still have no need to do so.
-
Norman Sword got a reaction from MtM in [File] Manic 40 Miner
View File Manic 40 Miner
Manic 40 Miner
This file is posted elsewhere ---
Moved here because I found it very difficult to find ---
After I stopped developing the JSW128 VK VL VM engine. I spent a week writing a version of Manic Miner called Manic 40 Miner.
This does not contain any new rooms. They are the original and Ligans rooms.
This means this version contains 40 caverns, starting with the original 20 caverns, then continuing on with another 20 caverns originally desisigned by Ligan. (of those 20 caverns, some have been redesigned by me)
NOTE this runs in 48k the same as the original.
This has a built in part game editor ---- Not enough space to add more scope, when the room/cavern count has been doubled.
----------------------------------------------------------------
Submitter Norman Sword Submitted 04/11/2023 Category Manic Miner [Remakes]
-
Norman Sword got a reaction from jetsetdanny in [File] Manic 40 Miner
View File Manic 40 Miner
Manic 40 Miner
This file is posted elsewhere ---
Moved here because I found it very difficult to find ---
After I stopped developing the JSW128 VK VL VM engine. I spent a week writing a version of Manic Miner called Manic 40 Miner.
This does not contain any new rooms. They are the original and Ligans rooms.
This means this version contains 40 caverns, starting with the original 20 caverns, then continuing on with another 20 caverns originally desisigned by Ligan. (of those 20 caverns, some have been redesigned by me)
NOTE this runs in 48k the same as the original.
This has a built in part game editor ---- Not enough space to add more scope, when the room/cavern count has been doubled.
----------------------------------------------------------------
Submitter Norman Sword Submitted 04/11/2023 Category Manic Miner [Remakes]
-
Norman Sword got a reaction from Spider in [File] Manic 40 Miner
View File Manic 40 Miner
Manic 40 Miner
This file is posted elsewhere ---
Moved here because I found it very difficult to find ---
After I stopped developing the JSW128 VK VL VM engine. I spent a week writing a version of Manic Miner called Manic 40 Miner.
This does not contain any new rooms. They are the original and Ligans rooms.
This means this version contains 40 caverns, starting with the original 20 caverns, then continuing on with another 20 caverns originally desisigned by Ligan. (of those 20 caverns, some have been redesigned by me)
NOTE this runs in 48k the same as the original.
This has a built in part game editor ---- Not enough space to add more scope, when the room/cavern count has been doubled.
----------------------------------------------------------------
Submitter Norman Sword Submitted 04/11/2023 Category Manic Miner [Remakes]
-
Norman Sword got a reaction from Spider in JSW engine should pause briefly when you die
Doing the drop through the Security Guard gains no advantage. The Wine Cellar still needs to be completed. And can not be completed in reverse.So what exactly are the benefits of using a life to gain no advantage.
-
Norman Sword got a reaction from jetsetdanny in JSW engine should pause briefly when you die
Doing the drop through the Security Guard gains no advantage. The Wine Cellar still needs to be completed. And can not be completed in reverse.So what exactly are the benefits of using a life to gain no advantage.
-
Norman Sword got a reaction from MtM in conveyor Slide platforms
Just placing this at the start of a heading - so it is not swamped (or ignored). This replaces the code I deleted.
I am nearing 70 and I leave for a quite life. Whilst I will still write code, it will be just for my own amusement.
All Needed data are contained within the file.
slide_platform.tap