Jump to content
Jet Set Willy & Manic Miner Community

SymbolShift

Member
  • Posts

    179
  • Joined

Reputation Activity

  1. Haha
    SymbolShift reacted to UncleWan in Happy Chinese New Year!   
    With the sound of firecrackers, a year comes to an end.Tonight is the last night of the Year of the Snake.Wishing everyone good fortune in the Year of the Horse!
    My mini-game has been submitted, and I also used AI to make the game's cover.🙂
    Have Fun!

  2. Thanks
    SymbolShift got a reaction from Hervé AST in JSW In London   
    Jolly good old chap! Looking forward to this one
  3. Like
    SymbolShift reacted to lemmylemming in Jet Set Willy engine & physics in Scratch   
    I've seen those projects, they are quite impressive! I'm surprised by how accurate they are 🙂 I don't think i'll be able to make something as good as those.
     
    In other news, i'm currently working on adding guardians! I have vertical guardians mostly finished so far.

  4. Like
    SymbolShift got a reaction from UncleWan in Merry Christmas-time Everybody!   
    Merry Christmas also! Hope everyone has a good one

  5. Like
    SymbolShift got a reaction from UncleWan in JSW with scrolling   
    Usually not a fan of enhanced colour remakes, but I cannot deny that Java Tileset always looks gorgeous. Would love to see a MM version (anyone feeling artistic?) 😁
  6. Like
    SymbolShift reacted to jetsetdanny in JSW Central YouTube channel   
    The JSW Central YouTube channel has just reached the milestone of 500 subscribers! 😁

    Thank you SO MUCH to everyone who has subscribed - it feels good to know that this way of promoting JSW and MM games reaches more and more people 😊.
  7. Like
    SymbolShift reacted to MikeH in Thank you to all the JSWMM community!   
    I just discovered the Jet Set Willy homebrew scene about 2 months ago and have been steadily ploughing my way through the back catalogue. Wow! I am so impressed with what people have achieved and the scene that has grown up around JSW and Manic Miner over the last forty years.
    I remember playing Jet Set Willy on my older cousin's Spectrum 48k with him when I was very young. I remember that it was hard, that it had an incredible atmosphere and that it sparked something in the imagination. I don't think either of us were very good at it, but we loved playing it nonetheless. Fast forward to a couple of years ago and I got into retro gaming handhelds. This was a huge nostalgia blast, and let me re-live some of my favourites from the Speccy, C64 and Amiga. Just before Christmas I gave Manic Miner a go. It was a game I had never played back in the day, but with the advantage of save states I was able to really get into it. Then I thought to have another look at JSW and noticed there was at least a dozen remakes included in the rom pack I had found. This was intriguing to me, as some of the best games I had recently played on other platforms (such as NES) had been homebrew games. I started dipping my toe in and I got hooked!
    Now I'm playing a JSW remake every day. I load it up on my handheld with my morning coffee. I bring it with me in the car when I take the kids to activities. And after they're finished their homework I delve in again. They say "Dad, you're always playing Jet Set Willy!".
    One of the "problems" of the retro gaming handheld thing is that with almost every title ever published available at your fingertips it can be quite hard sometimes to choose what to play. At the moment I'm loving the idea of playing a series of games with the same mechanics, but different concepts. I am absolutely loving the experience of exploring Middle Earth, Egyptian pyramids, the life of Doc Shiels, space stations and lairs of dominatrix vampires. I think there's something really special about the ability to name each room that acts as a kind of springboard for the imagination.
    I want to say a huge thanks to the people that have been involved in the scene down through the years. To have something to fill the idle hours of the day that is not served to me by a social media algorithm but has instead emerged from the dedication of an individual artist who loves their subject is priceless.
    And I'd like to say a special thanks to the people who have been involved in efforts to preserve and present this body of work. I have consulted Danny's JSW Central and his YouTube channel many, many times when I've been stuck on a game, or need inspiration for what to play next. Without this I would be lost, literally!
  8. Thanks
    SymbolShift reacted to jetsetdanny in Coding music in JSW128 and JSW64 games   
    Overview
    The objective of this document is to allow, and make it easy for, authors of JSW games to code their own in-game music for games using the JSW128 and JSW64 game engines.
    I have prepared one document, but I will post it in several parts to make it easier to read and to reply to the various issues I intend to discuss.
     
    Credits
    The following information draws heavily on (and at times quotes directly) information contained in John Elliott’s document “Jet Set Willy 128: Music format” and in his JSWED v2.3.7 manual (a PDF file that can be found in JSWED’s installation folder).
    Richard Hallas’s document “A Miner Triad. Music in Jet-Set Willy and both versions of Manic Miner” was used for the JSW48 chart tone.
    Andrew Broad’s specialised program SPECSAISIE was used to obtain the basic tone chart for the 128K games as equivalent to the basic tone chart of the 48K games.
     
    Introduction
    People interested in creating new JSW games using JSWED will likely design games using either the classic 48K game engine (JSW48) or one of the 128K game engines, i.e., JSW128 or JSW64.
    How to code music for JSW48 games was described very clearly by Richard Hallas in his document mentioned above. More useful information can also be found in this thread.
    This document discusses the coding of title-screen and in-game music in games using the JSW128 and JSW64 game engines. Most of the information presented here has already been available for a long time in John Elliott’s documents credited above. My aim is to present it in a slightly different way — which I hope makes it easier to understand what should and what can be done. I also share my own experiences and practices from coding the 128K music.
    Music in JSW128 and JSW64 games is played by default via a built-in music player by Ian Collier. This music player can be replaced in JSWED with Soundtracker by BZYK (Piotr Baczkiewicz). I have had no experience with Soundtracker, so this document refers exclusively to the default music player.
    My own experiences with coding 128K music relate to two games by Hervé Ast released in 2025. Hervé kindly allowed me to contribute musical arrangements to them. For “Welcome to Willy’s Fun Park!”, I composed both the title-screen tune and the in-game tune (the same in all rooms). In “Willy in the Islands of Mystery. Part II: The Temple”, I expanded my work significantly: I composed multiple in-game tunes and modified the game engine to allow each room to have its own tune, resulting in different tunes in various rooms.
  9. Thanks
    SymbolShift reacted to Hervé AST in [File] Willy in the Islands of Mystery : Part II : The Temple   
    View File Willy in the Islands of Mystery : Part II : The Temple
    Hello everyone
    I am thrilled to announce the release of my sixth game, "Willy in the Islands of Mystery: Part II: The Temple."
    It uses the JSW64 engine with the variant [].
    This game is a direct sequel to the first game, "Willy in the Islands of Mystery: Part I; Exploration," created in 2007.
    I encourage you to start by playing Part I.
    It is available for download via this link:
    https://xa.bi/jsw/islands1.htm
    Part I, "Exploration":
    The story: For some unknown reason—perhaps after the sinking of his cruise ship—Willy is alone on a raft in the middle of the ocean. One morning, he discovers a mysterious island on the horizon. He will have to explore it and find a way back home...
    Part II, "The Temple,"
    Begins in the exact same room where Willy finished the game in Part I.
    The story: After exploring the islands, Willy discovers an ancient temple. To leave the Isles of Mystery, he must face its dangers and collect all the flashing objects scattered inside. Perhaps the Temple holds the key to his freedom.

    Part II, "The Temple," has many surprises in store for you.
    Technically, it's the first JSW game with different music for each room.
    The theme is therefore different depending on the room.
    This game also has many effects that greatly enhance the game's atmosphere.
    I won't say any more; you'll have to discover it all for yourself...
    And I've saved the best for last: I didn't create this game alone. Daniel (JetSetDanny) worked incredibly hard on all these improvements: music programming, visual effects, adding traps, scrolling messages, loading screen, end screen, game translation, title colors, complete testing, promoting the game on social media and websites dedicated to classic games… I think I'm forgetting some things, and I apologize to him.
    It was a colossal and time-consuming undertaking. I want to thank him for his dedication and availability.
    This is why this game is co-signed (Hervé and Daniel), as you can see on the home screen.
    The game is available in two languages: English and French, In TAP and TZX formats

    Have fun!   
    Hervé


    Submitter Hervé AST Submitted 12/31/2025 Category Jet Set Willy [Remakes]  
  10. Like
    SymbolShift reacted to jetsetdanny in Merry Christmas-time Everybody!   
  11. Like
    SymbolShift got a reaction from JianYang in Merry Christmas-time Everybody!   
    Merry Christmas also! Hope everyone has a good one

  12. Like
    SymbolShift got a reaction from MtM in Merry Christmas-time Everybody!   
    Merry Christmas also! Hope everyone has a good one

  13. Like
    SymbolShift got a reaction from Hervé AST in Merry Christmas-time Everybody!   
    Merry Christmas also! Hope everyone has a good one

  14. Like
    SymbolShift got a reaction from Spider in Merry Christmas-time Everybody!   
    Merry Christmas also! Hope everyone has a good one

  15. Like
    SymbolShift got a reaction from Jet Set Willie in Merry Christmas-time Everybody!   
    Merry Christmas also! Hope everyone has a good one

  16. Like
    SymbolShift reacted to Jet Set Willie in Merry Christmas-time Everybody!   
    The topic says it all! 
  17. Thanks
    SymbolShift reacted to jetsetdanny in JSW Central YouTube channel   
    Today marks the fifth anniversary of the publication of the first videos—starting with walkthroughs of Manic Miner, Jet Set Willy and Jet Set Willy II—on the JSW Central YouTube channel, initially launched as a companion to my JSW Central website.
    Five years after that modest beginning, the channel now showcases more than 200 videos with walkthroughs of MM and JSW games and variants. As of now, walkthroughs of *all* MM and JSW games for the ZX Spectrum released until June 2025 have been presented on the channel, as well as walkthroughs of the most visually interesting entries among what I classify as “versions and minor mods” of the original MM and JSW.
    A big thank you to everyone who has subscribed to the JSW Central YouTube channel (close to 500 people now—amazing! 😁).
    As mentioned in my previous post (sorry for the repetition!) all videos are listed in the “JSW Central videos” section of JSW Central. For each entry, two links are provided: one leading to the YouTube upload, and another to the Internet Archive, where the video can be downloaded in its original Full HD quality or in an AI-upscaled 4K version. These links are also included on each game’s individual page, where the YouTube videos are embedded.
    While the content of the walkthroughs is the same as in the YouTube uploads, the downloadable versions may include minor refinements, such as adjusted title screens or improved audio synchronisation. Therefore, if you wish to download a JSW Central video, I strongly recommend obtaining the final version from the Internet Archive rather than from YouTube. You can see the whole collection at a glance here.
    My plans for further development of the JSW Central YouTube channel and of the Internet Archive video collection are as follows:
    – presenting new MM/JSW games a few months after each release (these will, of course, be very rare, as new games don’t appear that often);
    – presenting the remaining “versions and minor mods” of the original MM and JSW (from time to time, as showcasing various nearly identical versions in a row wouldn’t be very exciting);
    – presenting ZX Spectrum platform games that may be of interest to MM/JSW fans (I started with Monty on the Run, as it’s one of my non-MM/JSW favourites).
    In the future, the presentations on this channel *might* also include MM/JSW and related games for platforms other than the ZX Spectrum, but I’m *not* making a firm promise at this point.
    And again, to repeat what I posted very recently: I hope this growing collection of videos—based on my RZX walkthroughs, which are also available for download on each game’s page on JSW Central—will serve as a valuable resource for any fans of MM/JSW who are struggling with a game or simply want to see how it can be completed. I also hope it will help promote Miner Willy’s multiple universes to a wider audience 🙂 .
  18. Like
    SymbolShift reacted to Hervé AST in JSW In London   
    Hello to the entire JSW community,
    After a few months' absence due to a busy schedule that prevented me from dedicating myself to creating my games, I'm back.
    I hope you're all doing well and that your projects are progressing smoothly.
    And that you've had the chance to play "Welcome to Willy's Fun Park" (project 7) ! 🙃
     
    This new topic aims to update you on the progress of my next game:
    Project 8 - JSW in London :
    JSW game, 64W version - 128 rooms.
    Its release is planned for 2026. I'm hoping for a release before summer.
    Here's the first progress report on the game's development:
    The paper plan is finalized. The file is created, and the rooms are in order. I've created and tested 6 rooms (4%). The final sequence is complete.  
    Here's an update on my other projects:
     
    Project 11 - Christmas Day. Version 64 [- 64 rooms 
    The paper plan is finished.
    The file is created and the pieces are ready.
    I've made good progress on this project; its release is planned for December 2026.
     
    Project 12 - Time Tunnel: Middle Ages. Version 64 [- 64 rooms 
    The paper plan is finished.
    The file is created and the pieces are ready.
    I've made good progress; I hope to release it in 2027.
     
    Project 10 - Journey to the Center of the Earth. Version 64W - 128 rooms.
    The paper plan is finished.
    The file is created and the pieces are ready.
    I've made good progress; I hope to release it in 2027.
     
    Project 9 - Exploration of Rama III. Version 64 [- 64 rooms.
    The paper plan is finished.
    The file is created and the pieces are ready.
     
    Project 7: Willy Saves Maria. Version 64W - 128 rooms.
    The file is created and the pieces are ready.
    This project will be published after all the previous ones.
    It was supposed to be the next one, but I'm more motivated for the previous projects.
     
    That's it for the latest updates to my projects, which are as close as possible to what I want to achieve.
    See you soon!
    Hervé
  19. Thanks
    SymbolShift reacted to Spider in Forum - Dark Mode   
    Yes its planned. 🙂
    The newer software versions (which we'll need to upgrade to sooner rather than later) have this built in, the usual '3 way' toggle , light/dark/system (browser I suspect) preference. Screenshots from elsewhere but the core software is the same:


  20. Thanks
    SymbolShift got a reaction from Spider in Forum - Dark Mode   
    Many of the older "light" themed forums are now equipped with a dark mode theme. Is this something that can be easily added to this forum?
    Thanks.
  21. Thanks
    SymbolShift reacted to Norman Sword in MM Movement and Collision Detection explanation   
    A big post of z80 code 

    The reason for the left right anomaly is simply caused by poor code layout as done by Matthew.
    When setting up movement code - it is normal to mirror the code for left and right. This simple procedure allows quick and accurate visual comparisons.

    Here the first lot of code is the layout of checking left and right movement when possibly on a ramp
    NOTE this has unused opcodes and does not mirror left and right
    Expect visual changes - over time on what you can see here. I will probably edit the visual layout.
    And correct errors as I see them. 
     
    MATTHEWS CODE:-
    Used by the routines at 8DD3 and 8ED4. This routine moves Willy left or right if necessary.
    8FBC    LD A,($85D0)    Pick up Willy's direction and movement flags from 85D0
    8FBF    AND $02            Is Willy moving left or right?
    8FC1    RET Z                  Return if not
    8FC2    LD A,($85D6)    Pick up the rope status indicator from 85D6
    8FC5    DEC A                Is Willy on a rope?
    8FC6    BIT 7,A
    8FC8    RET Z                 Return if so (Willy's movement along a rope is handled at 935E)
    8FC9    LD A,($85D0)    Pick up Willy's direction and movement flags from 85D0
    8FCC    AND $01            Is Willy facing right?
    8FCE    JP Z,$9042       Jump if so

    ; LEFT AND RIGHT CODE - DISPLAYED NEXT TO EACH OTHER

    Willy is moving right.          ; Willy is moving left.
    9042    LD A,($85D2)         ; 8FD1    LD A,($85D2)     Willy's animation frame from 85D2
    9045    CP $03                   ; 8FD4    OR A                   Is it 0?
    9047    JR Z,$904E            ; 8FD5    JR Z,$8FDC       If so, jump to move Willy's sprite left across a cell boundary
    9049    INC A                      ; 8FD7    DEC A                 Change Willy's animation frame at 85D2
    904A    LD ($85D2),A         ;8FD8    LD ($85D2),A
    904D    RET                        ; 8FDB    RET
    Willy's sprite is moving right  ; Willy's sprite is moving left across a cell boundary.
                                                                                           In the comments that follow, (x,y) refers to the coordinates of the top-left
                                                                                           cell currently occupied by Willy's sprite.
    904E    LD A,($85D1)         ; 8FDC    LD A,($85D1)     Pick up the airborne status indicator from 85D1
    9051    LD BC,$0000         ; 8FDF    LD BC,$0000     Prepare BC for later addition
    9054    OR A                      ; 8FE2    CP $00                Is Willy jumping?
    9055    JR NZ,$9078        ; 8FE4    JR NZ,$900A      Jump if so
    9057    LD HL,($85D3)     ; 8FE6    LD HL,($85D3)   Collect Willy's attribute buffer coordinates from 85D3
                                               ; 8FE9    LD BC,$0000     Prepare BC for later addition (again, redundantly)
    905A    LD A,($80DA)       ; 8FEC    LD A,($80DA)    Pick up the direction byte of the ramp definition for the current room from 80DA
    905D    DEC A                   ; 8FEF    DEC A                 Now A=0x1F if the ramp goes up to the left, or 0x41 if it goes up to the right
    905E    OR $9D                 ; 8FF0    OR $A1
    9060    XOR $BF               ; 8FF2    XOR $E0
    9062    LD E,A                   ; 8FF4    LD E,A                Point HL at the cell at (x-1,y+1) if the ramp goes up to the left, or at the cell at
                                                                                         (x+1,y+2) if the ramp goes up to the right
    9063    LD D,$00              ; 8FF5    LD D,$00
    9065    ADD HL,DE           ; 8FF7    ADD HL,DE
    9066    LD A,($80C4)       ; 8FF8    LD A,($80C4)    Pick up the attribute byte of the ramp tile for the current room from 80C4
    9069    CP (HL)                 ; 8FFB    CP (HL)              Is there a ramp tile in the cell pointed to by HL?
    906A    JR NZ,$9078        ; 8FFC    JR NZ,$900A    Jump if not
    906C    LD BC,$0020        ; 8FFE    LD BC,$0020    Prepare BC for later addition
    906F    LD A,($80DA)       ; 9001    LD A,($80DA)     Pick up the direction byte of the ramp definition for the current room from 80DA
    9072    OR A                      ; 9004    OR A                   Does the ramp go up to the right?
    9073    JR Z,$9078           ; 9005    JR NZ,$900A     Jump if so
    9075    LD BC,$FFE0        ; 9007    LD BC,$FFE0      BC=-32 (the ramp goes up to the left)
    9078    LD HL,($85D3)     ; 900A    LD HL,($85D3)   Collect Willy's attribute buffer coordinates from 85D3
    ; check extremes far right    ; and far left                  - jump room
    907B    ADD HL,BC           ;
    907C    INC HL                  ;
    907D    INC HL                  ;
    907E    LD A,L                   ; 900D    LD A,L                 Is Willy's screen x-coordinate 0 (on the far left)?
    907F    AND $1F               ; 900E    AND $1F
    9081    JP Z,$949E          ; 9010    JP Z,$948A          If so, move Willy into the room to the left;
    9084    LD DE,$0020      ;
    9087    LD A,($80B2)      ;
                                             ; 9013    ADD HL,BC           Point HL at the cell at (x-1,y+1), or at the cell at (x-1,y) if Willy is on or about to step
                                                                                         onto a ramp that goes up to the left, or at the cell at (x-1,y+2) if Willy is walking down a ramp
                                             ; 9014    DEC HL
                                             ; 9015    LD DE,$0020
    908A    ADD HL,DE         ; 9018    ADD HL,DE
                                             ; 9019    LD A,($80B2)        Pick up the attribute byte of the wall tile for the current room from 80B2
    908B    CP (HL)               ; 901C    CP (HL)                 Is there a wall tile in the cell pointed to by HL?
    908C    RET Z                  ; 901D    RET Z                     Return if so without moving Willy (his path is blocked)
    908D    LD A,($85CF)     ; 901E    LD A,($85CF)        Pick up Willy's y-coordinate (Y) from 85CF
    9090    SRA C                  ; 9021    SRA C                    Now B=Y (if Willy is neither on nor about to step onto a ramp), or Y+16
                                                                                           (if Willy is walking down a ramp),
                                                                                           or Y-16 (if Willy is on or about to step onto a ramp that goes up to the left)
                                                                                           this will be Willy's new y-coordinate
    9092    ADD A,C              ; 9023    ADD A,C
    9093    LD B,A                 ; 9024    LD B,A
    9094    AND $0F             ; 9025    AND $0F               Is Willy at a point in a jump (left) where his sprite occupies three rows of cells?
    9096    JR Z,$90A1         ; 9027    JR Z,$9032           Jump if not (Willy's sprite is cell-aligned)
    9098    LD A,($80B2)     ; 9029    LD A,($80B2)        Pick up the attribute byte of the wall tile for the current room from 80B2
    909B    ADD HL,DE         ; 902C    ADD HL,DE           Point HL at the cell at (x-1,y+2)
    909C    CP (HL)               ; 902D    CP (HL)                 Is there a wall tile there?
    909D    RET Z                  ; 902E    RET Z                     Return if so without moving Willy (his path is blocked)
    909E    OR A                    ; 902F    OR A                       Point HL at the cell at (x-1,y+1)
    909F    SBC HL,DE          ; 9030    SBC HL,DE
    90A1    LD A,($80B2)      ;
    90A4    OR A                   ; 9032    OR A                        Point HL at the cell at (x-1,y), or at the cell at (x-1,y-1) if Willy is on or about
                                                                                            to step onto a ramp that goes up to the left, or at the cell at (x-1,y+1) if Willy
                                                                                            is walking down a ramp
    90A5    SBC HL,DE         ; 9033    SBC HL,DE
    90A7    CP (HL)              ;
    90A8    RET Z                 ;
    90A9    DEC HL              ;
    90AA    LD ($85D3),HL ; 9035    LD ($85D3),HL        Save Willy's new attribute buffer coordinates (in HL) at 85D3
    90AD    XOR A 
    90AE    LD ($85D2),A   ;
    90B1    LD A,B               ; 9038    LD A,B                       Save Willy's new y-coordinate at 85CF                 ;
    90B2    LD ($85CF),A  ; 9039    LD ($85CF),A
    90B5    RET                  ; 903C    LD A,$03                   Change Willy's animation frame at 85D2 from 0 to 3
                                          ; 903E    LD ($85D2),A
                                          ; 9041    RET

    ;=============================================
    The above code laid out with symatry - NOTE the bug can be inserted by just removing the head check.
    Here I relay out the code with symetry

    Used by the routines at 8DD3 and 8ED4. This routine moves Willy left or right if necessary.
    8FC2:
            LD A,($85D6)    Pick up the rope status indicator from 85D6
            DEC A                Is Willy on a rope?
            RET m                Return if so (Willy's movement along a rope is handled at 935E)
            LD A,($85D0)    Pick up Willy's direction and movement flags from 85D0
            bit 1,a                  Is Willy moving left or right?
            RET Z                  Return if not
            bit 0,a                  Is Willy facing right?
    ;set up some data for later
            LD A,($85D2)     Pick up Willy's animation frame from 85D2
           LD BC,$0000       set no displacement in bc
            JP Z,rampR         Jump if facing right
    Code would drop through to rampL
    Willy is moving right.   ; Willy is moving left.
    rampR:                          ;rampL  
            CP $03                           OR A                      Is it 0?
            JR Z,right              ;         JR Z,left                If so, jump to move Willy's sprite left across a cell boundary
            INC A                    ;         DEC A                   Decrement Willy's animation frame at 85D2
            LD ($85D2),A       ;         LD ($85D2),A
            RET                       ;         RET

    Willy's sprite is moving right  ; Willy's sprite is moving left across a cell boundary.
                                                                                  In the comments that follow, (x,y) refers to the
                                                                                  coordinates of the top-left cell currently occupied by Willy's sprite.
    right:                             ; left
           LD A,($85D1)                   LD A,($85D1)        Pick up the airborne status indicator from 85D1
            OR A                     ;         OR A                       Is Willy jumping?
            JR NZ,nrampR     ;         JR NZ,nrampL       Jump if so - NO RAMP ADJUSTMENT
            LD HL,($85D3)    ;         LD HL,($85D3)       Collect Willy's attribute buffer coordinates from 85D3
            LD A,($80DA)      ;         LD A,($80DA)        Pick up the direction byte of the ramp definition for the current room from 80DA
            DEC A                  ;         DEC A                     Now A=0x1F if the ramp goes up to the left, or 0x41 if it goes up to the right
            OR $9D                ;         OR $A1
            XOR $BF              ;         XOR $E0
            LD E,A                  ;         LD E,A                    Point HL at the cell at (x-1,y+1) if the ramp goes up to the left, or at the cell at (x+1,y+2)
                                                                                  if the ramp goes up to the right
            LD D,$00             ;         LD D,$00
            ADD HL,DE          ;         ADD HL,DE
    ; is the ramp undefoot ?
            LD A,($80C4)      ;         LD A,($80C4)        Pick up the attribute byte of the ramp tile for the current room from 80C4
            CP (HL)                ;         CP (HL)                  Is there a ramp tile in the cell pointed to by HL?
            JR NZ,nrampR     ;         JR NZ,nrampL       Jump if not
    ; set bc for ramp downwards
            LD BC,$0020      ;         LD BC,$0020         Prepare BC for later addition
            LD A,($80DA)     ;         LD A,($80DA)        Pick up the direction byte of the ramp definition for the current room from 80DA
            OR A                    ;         OR A                       Does the ramp go up to the right?
            JR Z,nrampR       ;         JR NZ,nrampL       Jump if so
    ; set bc for ramp upwards
            LD BC,$FFE0      ;         LD BC,$FFE0         BC=-32 (the ramp goes up to the left)
    ; before going any further check for going off screen
    nrampR:                      ;nrampL:
    LD HL,($85D3)           ;            LD HL,($85D3)   Collect Willy's attribute buffer coordinates from 85D3
    ; position adjust
            INC HL                ;
            INC HL                ;
            LD A,L                 ;         LD A,L                     Is Willy's screen x-coordinate 0 (on the far left)?
            AND $1F              ;         AND $1F
            JP Z,$949E         ;         JP Z,$948A           If so, move Willy into the room to the left;
    ; the above jumped room at the left/right edge
    ; adjust position if on a ramp - i.e move up/down - note bc=0 if not on a ramp
        add hl,bc                 ;         ADD HL,BC            this is the ramp adjustment
    ; re align the checking for walls
                                        ;         DEC HL
            ld de,$0020        ;         LD DE,$0020        Displacement for the tile below
            ld a,($80b2)       ;         LD A,($80B2)        Pick up the attribute byte of the wall tile for the current room from 80B2
             LD B,A               ;         LD B,A                    save wall tile value in b
    ; head check  - to implement bug - remove the check - can do either left or right - perhaps both
            CP (HL)              ;         CP (HL)                   Is there a wall tile in the cell pointed to by HL?
            RET Z                 ;         RET Z                      Return if so without moving Willy (his path is blocked)
    ; BODY CHECK
            ADD HL,DE        ;         ADD HL,DE
            CP (HL)              ;         CP (HL)
            RET Z                 ;         RET Z
    ;calc new y position
            LD A,($85CF)    ;         LD A,($85CF)        Pick up Willy's y-coordinate (Y) from 85CF
            SRA C                ;         SRA C                     Now B=Y (if Willy is neither on nor about to step onto a ramp), or Y+16
                                                                                (if Willy is walking down a ramp), or Y-16 (if Willy is on or about to step onto a ramp
                                                                                that goes up to the left); this will be Willy's new y-coordinate
            ADD A,C            ;         ADD A,C
            LD c,A               ;         LD c,A
    ; now check if cell aligned
            AND $0F           ;         AND $0F                Is Willy at a point in a jump (left) where his sprite occupies three rows of cells?
            JR Z,ramp3R     ;         JR Z,ramp3L         Jump if not (Willy's sprite is cell-aligned)
    ; if not aligned check 3rd tile
             LD A,B              ;         LD A,B
            ADD HL,DE       ;         ADD HL,DE            Point HL at the cell at (x-1,y+2)
            CP (HL)             ;         CP (HL)                  Is there a wall tile there?
            RET Z                ;         RET Z                     Return if so without moving Willy (his path is blocked)
            OR A                 ;         OR A                       Point HL at the cell at (x-1,y+1)
            SBC HL,DE       ;         SBC HL,DE             restore back to position before 3rd tile was checked
    ; adjust position back to level with the top tile
    ramp3R:                   ;ramp3L:
          OR A                   ;         OR A
          SBC HL,DE         ;         SBC HL,DE
                                     ;
    ; and re REALIGN for top left
            DEC HL             ;
    ; save data and exit
            LD ($85D3),HL ;         LD ($85D3),HL       Save Willy's new attribute buffer coordinates (in HL) at 85D3
            ld a,c                 ;         LD A,c                     Get Willy's new y-coordinate
            LD ($85CF),A   ;         LD ($85CF),A          Save Willy's new y-coordinate at 85CF
            xor a                 ;         LD A,$03                  Change Willy's animation frame at 85D2 from 0 to 3
        ld ($85d2),a         ;         LD ($85D2),A
        RET                       ;         RET
    ;============================================== 
    The Feature that is displayed in the movement code.
    When it was implemented it allowed a feature and that feature was used. 
    It is similar to the pause bug, attic arrow bug, missing and uncollectable objects etc

    Whilst I think my code is correct -  if I notice errors - then I will correct them. The purpose of the code is to show code being laid out as similar for both directions.
                                     ;
     
  22. Like
    SymbolShift got a reaction from JianYang in Forum - Dark Mode   
    Many of the older "light" themed forums are now equipped with a dark mode theme. Is this something that can be easily added to this forum?
    Thanks.
  23. Thanks
    SymbolShift reacted to jetsetdanny in Forum - Dark Mode   
    Thanks for this question, SymbolShift. I will have to defer the answer to Andy (Spider) as he is the admin that knows all about the technical side of things here.
  24. Like
    SymbolShift reacted to JianYang in MM Movement and Collision Detection explanation   
    The superstar solution would be to give the game an "enable bug compatibility" option. I'm not sure what platform you're talking about. On a speccy 48k that would probably require wizard levels of programming on a more modern platform it would still be hard.
    Just throwing that out in case it wasn't obvious.
  25. Like
    SymbolShift reacted to Norman Sword in MM Movement and Collision Detection explanation   
    See "altered reality" for corrected Willy movement. And it does not feel strange.
     
×
×
  • Create New...

Important Information

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