Jump to content
Jet Set Willy & Manic Miner Community

Spider

Moderator
  • Posts

    5,227
  • Joined

  • Last visited

Everything posted by Spider

  1. Just something I was toying with yesterday but did not get time to post it. Various takes on the existing 'Manic Miner' flashing loading screen really. You'll need to click the pics to see the flashing effect, I've purposely saved them as animated .gif files to allow this. 1. Logo spaced. Simply there is a lot less "overlap" between the words. Available as full (complete attribute block 768 bytes) or as minimum required (379 bytes) Pics of both: And their downloads, both include a Basic loader for convenience: logo_spaced_full.tzx logo_spaced_minimum.tzx 2. Logo split. Not too dissimilar to the above however the spacing between the two words is a lot larger. Again, available as full (768 bytes) or minimum (443 bytes) Pics: Files: logo_split_full.tzx logo_split_minimum.tzx 3. Logo static. The two words neatly spaced out, no flashing effect at all. As above, available as full (768 bytes) or minimum (507 bytes) Pics: Files: logo_static_full.tzx logo_static_minimum.tzx 4. In Basic. More for fun than anything else, the original logo but in Basic Data statements. Each data line is 32 bytes (one line) long for convenience. Its only minimum as its easy to either have a black screen or simply add another line of zeros to it. Having said that the original actually has black bright (possibly flash) paper where as this does not but its invisible anyway. Pics: File: logo_in_basic.tzx Enjoy ? :)
  2. 1. POKE 33792,243 DI ; Disable interrupts POKE 33793,49 POKE 33794,254 POKE 33795,91 LD SP, 23550 ; set the stack pointer POKE 33796,195 POKE 33797,202 POKE 33798,135 JP 34762 ; jump to the title screen code 2. POKE 34483, 195 ;This changes what was 'JP Z, 34762' (jump to title screen if code was correct) to 'JP 34762' (jump to title screen) regardless of what code was entered. 3. POKE 34493, 195 ; Same as (2) but on the second entry attempt. If the first code was actually correct ( ! ) then it would start the game anyway. Otherwise the second code (right or wrong) is accepted. 4. POKE 34497, 202 : POKE 34498, 135 ; These change the 'the second code was incorrect so reset the machine aka 'JP 0' to 'JP 34762' so that after failing the second attempt the game is started anyway. Hope that explains it a bit. The actual 'test code' looks like this: LD HL, 16384 ; 34463 33 0 64 LD DE, 16385 ; 34466 17 1 64 LD BC, 6911 ; 34469 1 255 26 LD (HL), 0 ; 34472 54 0 LDIR ; 34474 237 176 The code above blacks out the screen. Paper 0 etc. LD IX, 34187 ; 34476 221 33 139 133 CALL 34499 ; 34480 205 195 134 The code above tells it where to get the message to display "enter code..." and calls the keypad entry routine JP Z, 34762 ; 34483 202 202 135 If the code was correct (Z flag set) then jump to the title screen (34762) else... LD IX, 34219 ; 34486 221 33 171 133 CALL 34499 ; 34490 205 195 134 The code above similar to the first attempt (different message, "sorry please try...") and calls the keypad routine again JP Z, 34762 ; 34493 202 202 135 Again, if the code entered was correct jump to the title screen (34762) else... JP 0 ; 34496 195 0 Reset the machine aka USR 0
  3. I did consider (well kind of) that but its only effective initially. There are a few ways of doing it: 1. Change the (slightly obfuscated) code to make it jump to the title page , completely bypassing the code section. At least two ways of doing this. 2. Change it so it accepts any code on the first attempt. 3. As (2) but for the second attempt 4. As (2) and (3) but make it go to the title screen after the second code (rightly or wrongly) :) You can't jump to the immediate title page from Basic without issues, however all the (largish) startup code can be thrown out (I have an update to my trim tool coming soon) with simply setting the SP and disabling the interrupts, at this stage you can then jump straight to the start. I'd sort of consider this not normal although doing this does relive a lot of free space potentially (all the startup code and all the keypad code) plus the 'DI / SP / JP' can go anywhere as its never used again once its called.
  4. A small simple tool to remove all the 'fire' cells amongst others. Its quite flexible in that it works with the Bug Byte / Software Projects / Ventamatic and MAD releases and it also appears to work well with third party games although this is not guaranteed. Its a simple find/replace in effect. To use it simply load it. If you have already loaded the Manic Miner game code: just RUN it. If you have not loaded the game code: RUN 9000 Once its finished, you'll be returned to Basic where you can either start the game via USR 33792 or save the resultant code if you prefer. To actually edit it, lines 150 to 340 are the ones to change. :) , each line represents a cavern. Basically it looks at their values and replaces them. For an example, the second line is for the the Cold Store: 160 DATA 12 , 13 , 0 , 8 , 8 , 0 This is simply: The Nasty1 value: 12 The Nasty 2 value 13 The Extra value 0 (as its not used here) Then the following three are their replacement values: New Nasty1 value: 8 (air) New Nasty2 value: 8 (air) New Extra value: 0 The reason for actually having separate values for replacements for the Nasties is simply to allow flexibility. A prime example is The Warehouse as that has both "poison flowers" and "X's" inside the crumby cells. If we were to set them both to zero then there would be gaps, using separate values allows us to for that screen change the "poison flowers" to air cells and set the "X's" to crumby cells to match. 310 DATA 6 , 33 , 0 , 0 , 68 , 0 The Nasty1 value: 6 The Nasty 2 value 3 The Extra value 0 (as its not used here) Then the following three are their replacement values: New Nasty1 value: 0 (air) New Nasty2 value: 68 (crumbly) New Extra value: 0 This will become very self explanatory once you've looked. :) The program should not need any immediate modification, it will work well 'as is' although you could modify it to do other things too. Enjoy. Fixer.tzx
  5. :) Good to post on WOS too. No, can't attach files on there to posts. I tend to either link to a file here or stick it somewhere else if its not jswmm related.
  6. Yes the traditional old poke for this worked but it also removed all the ropes too which was not great. :)
  7. During game development, It's sometimes useful to be able to quickly switch features on and off without having to resort to either re-starting the game, manually editing the assembly or worse still: having to reload it to test again. With this in mind the following "quick debug" pok files should prove useful. They certainly have to me! :) Note that its not really intended to use all options at once although you could, but there is little point in for example disabling a guardians movement and removing it as well. Note due to differences in how emulators handle (or not!) .pok files especially concerning zero values or replacement zero's, it is necessary to have two files and that you check / uncheck what is needed with each one. Debug_on.pok provides the following options: FREEZE Vertical Guardians: As described, they are not removed and are still harmful, they just stop moving. Re-entering a room will reset them to their initial positions which may be good (or bad!) news for Willy. It would probably be wise to use the Guardian Collision Detect with this, depending on what you are doing. FREEZE Horizontal Guardians: The same as above, except for the horizontal ones. FREEZE Ropes: The same as guardians but acting on ropes. Note Willy can still safely climb and use them in their frozen state. REMOVE All Guardians: This removes both horizontal and vertical guardians, apart from Maria who is not really a Guardian in the 'normal' sense as such. Note that this does not stop their movement routines, so if you re-enable them they may not appear in the same place along their path when they were removed. REMOVE All Arrows: Similar to Remove All Guardians, except it acts on arrows instead. REMOVE Ropes: As the two above but for ropes. DISABLE Guardian Detection: Allows Willy to walk straight through horizontal and vertical guardians without harm. DISABLE Fire Cell Collision Detection: Allows Willy to walk straight through any fire cells. Note they are partly treated as water cells and its possible for him to accidentally fall through them. This is only really an issue if the cell is the lowest block on the screen where care must be taken to avoid him falling through to the room below if its been defined. DISABLE Earth Cell Detection: This in effect treats solid earth cells as water cells, meaning Willy can walk through and also climb them as if they were water cells. This means he can walk or jump through most previously solid walls. A small side effect is if the lowest block in a room is an earth cell he can sometimes fall through it upon standing on it so a little bit of care must be taken. DISABLE All conveyors: Allows Willy free travel in either direction on a conveyor. Note the conveyor remains animated. FREEZE Clock: Infinite Time On. Writetyper Mode ON: Should not really need any explanation! Auto Item Collection ON: Again, pretty obvious. All items are automatically collected upon entry to a room. Fall Any Height ON: Self explanatory! Infinite Lives ON: Pretty obvious. The Debug_off.pok reverses all (or some) of the changes above: UN-FREEZE Vertical Guardians: As it says, it would be wise to ensure Willy is not too nearby a Guardian before switching their movement back on, unless you have disabled collision detection. UN-FREEZE Horizontal Guardians: As above, but for the horizontal ones. UN-FREEZE Ropes: Allow them to continue to swing. ENABLE All Guardians: Switches them back on. See the note above about their positioning upon activating this. ENABLE All Arrows: The same as enabling the Guardians but for arrows instead. ENABLE Ropes: Switches ropes back on if they were disabled. ENABLE Fire Cell Collision Detection: Switches instant death upon contacting a fire cell back on. ENABLE Earth Cell Detection: Restores earth cells back to being solid again. Ensure Willy is not standing inside a wall when applying this. ENABLE Conveyors: Switches the conveyor movement back on. UN-FREEZE Clock: Infinite Time Off. Writetype Mode OFF: Disables Writetyper mode. Re-activate via the above or the more conventional method in the Landing if preferred. Auto Item Collection OFF: Willy will need to touch the item to collect it as per normal. Fall Any Height OFF: Restores normal death by falling too far. Note that re-enabling this 'mid fall' could have some odd effects. Infinite Lives OFF: Pretty obvious I hope. JSW_Debug_Mode_ON.pok JSW_Debug_Mode_OFF.pok
  8. Disable arrows: POKE 37431,195 : POKE 37432,161 : POKE 37433,146 Disable guardians POKE 37334,195 : POKE 37335,52 : POKE 37336,146 These work better than some of the other methods as those either leave the ink behind (so if you stand in the path of a guardian you can see where it was) or some disable all the ropes too which is not ideal. The methods above apply a JP to skip over the 'guardian' or 'arrow' code when the routine looks at the type of entity to deal with. There are probably other ways of doing this however this seems to work fine.
  9. Yes I noticed this just a couple of days ago. :) I keep an offline copy for reference of them (the decimal ones)
  10. That does sound quite likely. From what I recall the 'race to release' was a bit hectic and I think Matt may of wanted other things possibly in the game :unsure:
  11. Congrats :) :) A few screenshots here would be an idea ;) :D
  12. I'm not actually sure why its using that. Richard may be the one to be able to answer that more accurately that I could ? :)
  13. The teleporter extension was loaded ;) so I've applied it.
  14. Its one 'post' per topic for 'best answer' :) I usually turn that off but I thought I'd enable ti for a few forum area's as it may of been useful. It also highlights it at the top of the page too. Feel free to 'play' with it.
  15. :) Quite likely the case. Ah yes some on WOS were not too happy about the 'removal' of this as its technically not a bug I guess.
  16. I'd have to check but I think I tried a couple of methods of this, and in the end just assigned a value (as above) rather than try to change the DEC instruction. As to why I'm not quite sure. :D :unsure:
  17. You can JP (HL) , ie jump to the 'contents of' HL but not 'call' it, so you're doing a GOTO (no return) rather than a GOSUB (which would happily accept a RET) AFAIK you can't do a JR with it either (not really tried) so a JR Z JRNZ would probably be out. Might be able to work around it though by doing a compare and / or carry set test then just "Calling" anyway... :unsure: Having said that it might well exist as an undocumented instruction but using these is not always a brilliant idea. Some protection schemes do AFAIK.
  18. I've re-written this from scratch although I've not quite finished. It now offers more locations to 'trim' although it will ask for confirmation too. I plan to include a descriptor field for each 'area' where appropriate too. The question I have is should use the user be presented with choices, working though a set of yes/no questions and then at the end it will 'trim' or should it be trimmed at each question ? The latter is easier to do although unless I do it is assembly the larger chunks will be slow. The 'set of questions' may seem easier to follow however it will be more work to do this... :unsure:
  19. :D Correct its not called, well almost not. Although the 'counter check' is still performed. Let me explain: The check is simply a: CPx In this version I changed that to CP41 (100,000 points) before it triggers vs the original of CP42 (10,000 points) , figuring not many players will score that high and those that do will probably appreciate the extra life. So in most cases there are no extra lives given. :) Setting it to 43 gives a new live every 1000 points ;) Note that this is listed in the dissasembly as address 37102/37103 but the said listing is for the Bug-Byte version. This one is the Software Projects one, so its in a slightly different place, it is at 37113/37114 Increased the delay loop counter for the speed: LD BC , xx LD BC , 150 in this version vs the original code in both versions of LD BC , 100 Its at 34401/34402/34403 (Bug-Byte version) In this version (Software Projects) it is at 34407/34408/34409 Edit... Coloured each version (BB vs SP) appropriately to make it easier to read.
  20. For Vega users, a special keymap is available for this edition here: http://games.zxvega.co.uk/game/jet-set-willy-2015---bug-fixed-edition
  21. Easily done. :) But I was purposely looking for something that looked half sensible (to me at least?) when in its existing position. I did not want to change the x/y co-ords... The first test I did I used the 'Wine Glass' from the Swimming Pool as its easy to get but it looked odd 'floating' mid-air in the hallway. :lol: :unsure:
  22. You know I thought about changing it to white to see if it was happy to collect the item for him. :)
  23. One of the official pokes (42183,11) to move the invisible object from First Landing to The Hall, well it works OK but the object is still invisible. To be fair it is in Willy's direct path unless he is jumping. After a little thought about this, it would be very easy to give it a shape, however a bit of care must be taken with a choice of shape as the object is actually 'floating mid-air' rather than on the ground so not all object shapes would suit. Looking at a few objects that are already 'floating' the ones used in West Wing Roof seem the best choice as: 1. They are only 5 instead of 8 bytes 2. They are already a 'floating' object Having already applied the 42183,11 poke, simply add these: 52196,10 52197,13 52198,60 52199,242 52200,192 Or if you prefer you can use a little bit of Basic to 'copy' those bytes: FOR N=52196 TO 52200 : POKE N,PEEK (N+11520) : NEXT N :)
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.