Jump to content
Jet Set Willy & Manic Miner Community

IRF

Contributor
  • Posts

    5,105
  • Joined

  • Last visited

Everything posted by IRF

  1. Well done on cracking Part 2 of the puzzle Danny! Now for Part 3 - find the secret exit from 'The Nightmare Room'! :-) (You already made a start on trying earlier!) I'm back off to bed now (a nightmare awoke me!!)
  2. No, you need three words,
  3. Danny, you are right that the message isn't always visible in 'The Nightmare Room' - it is always present, but not always visible (for a reason which I will explain at a later date, as it's a bit of a distraction right now). However, the thing that the message relates to isn't affected by whether or not you can see the message. You're definitely thinking along the right lines though. :) Getting closer to cracking the puzzle... Andy's already guessed that there's an anagram involved. EDIT: I'll save you a bit of head-scratching by pointing out that if you "compare the left-hand and the right-hand side of the message", you will see that they both contain the same combination of letters. So the anagram is repeated twice (in two configurations) across the character row. i.e. You need to look for one phrase, which is an anagram of both: 'EXISTENCE DRIFT ' and ' FIXED INTERSECT'
  4. My replies, appropriately enough, in red:
  5. So, you've finally solved Part 1 of the puzzle! Now for Part 2 - what is the meaning of this mysterious message??
  6. You've got it! There is a message written across the status bar of 'The Nightmare Room'! I'm amazed that no-one has noticed it before! It brings to mind this notorious psychological / observational test: https://en.wikipedia.org/wiki/Inattentional_blindness#Invisible_Gorilla_Test The message is comprised of words/letters written in red INK - hence all the clues to that effect. 'Outside the box' / 'big picture' because it's not contained within the playing area/room layout, where I guess everyone's focus tends to be when playing the game. (BTW You had the wrong end of the stick looking for a bouncing letter sprite, Andy - that's in a different game: 'The Bank' in Manic Mixup! :lol: )
  7. All the clues relate to the same thing! You're very close with something you've said there...
  8. A small clue: Try to look at 'the bigger picture'... Another clue: Think 'outside the box'... And don't forget about all the earlier clues I left in this topic... EDIT: Here's the link again - study the screenshots: https://jswcentral.org/jsw48-a-48_mini.html
  9. Yes indeed! It's something that no-one has discovered yet!
  10. Andy, have you had a chance to go through the screenshots yet this weekend? Do you want another clue (a big one)?
  11. Well done Danny? May I ask: did you download the game for this playtesting? I made a small tweak to the game file back in January (I think), to fix a small glitch/bug in the Title time routine (and to update the reader to give you credit for the Easy/Hard POKES idea, implemented differently here from JSW40-40). That change didn't affect the gameplay in any way, so it doesn't matter if you used an earlier version.
  12. None of those things are what I have in mind Danny. But Andy has told me (in a PM) that he is going to have a look this weekend - it's a glaringly obvious thing and you'll kick yourself once it's been pointed out to you! Hopefully once part one of the puzzle has been solved, you might feel intrigued enough to try to crack parts two and three... In terms of a RZX recording, I would urge you please to hold off for a little bit longer - your completion time (and enjoyment of the game) will benefit from it!
  13. The puzzle is in three parts (if you count spotting the visual clue in the first place as the first part).
  14. Thanks Norman. As it happens, in example 1, if the initial value held by S_M_C_counter1 was zero, then it would quickly be overwritten by 8 and then it would return to the intended pattern of the operand incrementing during each pass through the code (looping back from 15 to 8). (The initial value of zero might have an adverse impact though, depending on the context - especially if the variable is picked up by the program before it is first modified. e.g. an out-of-range guardian crashing into a wall at the edge of a room?) But I can see that in example 2, if you had a default value of zero stored at S_M_C_opcode, then execution of the code would never cause the labelled address to reach either of its intended operations (INC A or DEC A). Instead, the address S_M_C_opcode would toggle between acting as a NOP (00), and the 01 opcode - which would have the unintended effect of picking up the next pair of bytes which follow on from S_M_C_opcode, and loading those values into the BC register-pair!
  15. For consistency and elegance, wouldn't it be best, in the case of operations which are self-modified by the code, to insert NOP command(s) (opcode #00) wherever they appear in the source code listing? That way the default value held at the pertinent address(es) would be zero, as is the case with the operands that are self-modified. e.g. For your example of a direction label, list it in the source code as: S_M_C_direction: NOP And then use: LD A, #3C [for INC A] or LD A, #3D [for DEC A] or XOR A [to restore the default NOP] followed by: LD (S_M_C_direction), A for movement in whichever direction (or no direction).
  16. On reflection, I suppose it's obvious from the context how many bytes are affected (i.e. how many are going to be self-modified by the program).
  17. Would it be worth making a distinction between a single byte being subject to modification, and a two-byte word? Like LD D, $- versus: LD HL, $-$- Or something?
  18. Regarding the format here: Does the "$-$" bit refer to the fact that the operand is a two-byte word? EDIT: Apparently not - I've just noticed the self-modifying code in your source listing for Matthew's original code: In that case, the operand is only a single byte, yet you still use the same format: "$-$".
  19. Thanks for the explanation, Norman!
  20. Question: what do the initials 'S M C' stand for here?
  21. Should presumably read "Then change the routine at $8D33"? It's another good idea though!
  22. However, a byte could possibly be saved by replacing this (commands in green): with this: LD A, D ADD A, #08 LD D, A JP PO, tile_do or JP PE, tile_do ; Overflow Flag is set when ADD 8 takes D from #78 to #80, but not when D goes from #70 to #78 RET Again, I've not tried this out yet. And I'm not currently sure if, when the Overflow Flag is set, whether that translates as Parity Odd or as Parity Even? (But if one doesn't work - presumably causing the routine to bail out after drawing the pixels for the top half of the room only - then the opposite conditionality for the jump should do the trick.) EDIT: In this instance, testing the Sign Flag (i.e. JP P or JP M) would have the same effect as testing Overflow. In either case, there is only an absolute jump available for this purpose, not a relative jump. So only one byte can be saved, not two.
×
×
  • Create New...

Important Information

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