From ebf61b28f221f9c7a38d9f6b0a3265493adfc3d0 Mon Sep 17 00:00:00 2001 From: A Date: Sun, 19 Apr 2026 15:48:23 +0100 Subject: [PATCH 1/7] Merged the small Museus pages into the Industry page --- categories/consoles/Intellivision.md | 3 - categories/misc/Industry.md | 22 +++- categories/misc/Museums.md | 39 -------- pages/consoles/gameboy/Mrdo.md | 43 ++++---- public/css/theme.overrides.css | 34 +++++++ public/js/main.js | 144 ++++++++++++++++++++++++++- 6 files changed, 218 insertions(+), 67 deletions(-) delete mode 100644 categories/misc/Museums.md diff --git a/categories/consoles/Intellivision.md b/categories/consoles/Intellivision.md index bd1cd527..bd00fbaa 100644 --- a/categories/consoles/Intellivision.md +++ b/categories/consoles/Intellivision.md @@ -3,9 +3,6 @@ permalink: /intellivision layout: post category: intellivision title: Intellivision Reverse Engineering -consoleimage: /public/consoles/Intellivision.png -image_: /public/images/Intellivision.jpg -twitterimage_: https://www.retroreversing.com/public/images/Intellivision.jpg excerpt: Awesome list of Intellivision Game Development and Reverse Engineering information breadcrumbs: - name: Home diff --git a/categories/misc/Industry.md b/categories/misc/Industry.md index 6612b996..280fe14b 100644 --- a/categories/misc/Industry.md +++ b/categories/misc/Industry.md @@ -11,6 +11,7 @@ redirect_from: - /sega - /companies - /indie + - /museums breadcrumbs: - name: Home url: / @@ -107,9 +108,24 @@ Books were a must have for any game developers getting started in the industry, {% include_cached link-to-other-post.html post="/books" description="For more information on all the Game development Books check out this post." %} --- -## Museums - Games Industry related Museums -Museums about video games and game development are rare but they are becoming more popular, some are physical and others might be virtual experiences, but they are all important for preserving the history of video games: -{% include_cached link-to-other-post.html post="/museums" description="For more information on all the Game related Museums check out this post." %} +## Virtual Experiences + +### AUTO MUSEUM 64 +Built in Unity **Auto Museum 64** is a virtual Museum of 3D Vehicles from a variety of Nintendo 64 games. + +It was built by **leoburke** and is available on Itch.io: +[Auto Museum 64 by leoburke](https://leoburke.itch.io/auto-museum-64) + +This kind of experience is very cool, but it would be much better if it was in the browser (e.g WebGL) as its not something you would go back to often but it is something that would be good to share links with friends. + +Hopefully this will be the start of more Virtual museums that showcase 3d models or even maps from 3D video games. + +### Virtual Game Shop +Sadly due to the pandemic and the move to online downloads many of the excellent Specialist Video Game Stores have closed down. Many of us who grew up with them have nostalgic memories of their rows and rows of brand new boxed video games for whatever the current Sega/Nintendo/Sony/Microsoft console was hot at the time. + +A VR experience to simulate a Video Game shop with customisable games/posters/shelves/magazines/consoles would be a pretty relaxing experience, probably not exactly a big seller but would have its niche. + +

Found some more images & information on the Blockbuster Games concept; and it's companion store (in the next post), Blockbuster Music, in 'Stores of the Year 9' (1995)

It was located in Jacksonville, FL; designed by Fitch Inc. in 1994.
pic.twitter.com/TtUyUAw9r7

— Evan Collins | BLM 🏳️‍🌈 (@EvanCollins90) July 4, 2020
--- ## Commercial Documentaries on game development diff --git a/categories/misc/Museums.md b/categories/misc/Museums.md deleted file mode 100644 index b867019c..00000000 --- a/categories/misc/Museums.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: post -permalink: /museums -category: industry -title: Game Industry Museums and Virtual Experiences -breadcrumbs: - - name: Home - url: / -redirect_from: - - /book -editlink: ../categories/misc/Museums.md -recommend: industry -image_: /public/images/categories/Games Industry Museums.jpg -twitterimage_: https://www.retroreversing.com/public/images/categories/Games Industry Museums.jpg -tags: - - industry ---- - -# Virtual Experiences - -## AUTO MUSEUM 64 -Built in Unity **Auto Museum 64** is a virtual Museum of 3D Vehicles from a variety of Nintendo 64 games. - -It was built by **leoburke** and is available on Itch.io: -[Auto Museum 64 by leoburke](https://leoburke.itch.io/auto-museum-64) - -This kind of experience is very cool, but it would be much better if it was in the browser (e.g WebGL) as its not something you would go back to often but it is something that would be good to share links with friends. - -Hopefully this will be the start of more Virtual museums that showcase 3d models or even maps from 3D video games. - ---- -# Virtual Experience Ideas - -## Virtual Game Shop -Sadly due to the pandemic and the move to online downloads many of the excellent Specialist Video Game Stores have closed down. Many of us who grew up with them have nostalgic memories of their rows and rows of brand new boxed video games for whatever the current Sega/Nintendo/Sony/Microsoft console was hot at the time. - -A VR experience to simulate a Video Game shop with customisable games/posters/shelves/magazines/consoles would be a pretty relaxing experience, probably not exactly a big seller but would have its niche. - -

Found some more images & information on the Blockbuster Games concept; and it's companion store (in the next post), Blockbuster Music, in 'Stores of the Year 9' (1995)

It was located in Jacksonville, FL; designed by Fitch Inc. in 1994. pic.twitter.com/TtUyUAw9r7

— Evan Collins | BLM 🏳️‍🌈 (@EvanCollins90) July 4, 2020
diff --git a/pages/consoles/gameboy/Mrdo.md b/pages/consoles/gameboy/Mrdo.md index d65b90d3..a9e55871 100644 --- a/pages/consoles/gameboy/Mrdo.md +++ b/pages/consoles/gameboy/Mrdo.md @@ -1051,10 +1051,11 @@ If you see: --- ### Rebuilt procedure map This table lists every procedure-style label detected in the converted RGBDS output, along with its rebuilt `bank:addr` location, so you can set breakpoints quickly: -The retail columns are best-effort and are only filled when the mapper script can place the routine at a single retail offset using byte-signature matching against `build/mrdo_original.gb`. +The retail columns are best-effort and are only filled when the mapper script can place the routine at a single retail offset in `build/mrdo_original.gb` using either byte-signature matching or opcode-stream matching (ignoring immediates). The `Retail match` column gives a rough confidence level: * `entry` - the routine entrypoint bytes match retail (high confidence). * `in-body` - the entrypoint is inferred from multiple in-body signature matches (use as a hint, not proof). +* `opcodes` - the instruction opcode stream matches while ignoring immediates (useful when the routine moved, but still a hint rather than proof). * `unverified` - the row was previously filled but could not be re-verified by the current mapper settings. Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail match @@ -1106,19 +1107,19 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `DODIMOVE` | `00:3A58` | | | `DUMPBIG` | `00:3A7E` | `00:33CD` | `0x33CD` | entry `DUMPBG` | `00:3A93` | | | -`SHOWAVERAGES` | `00:3AA2` | | | +`SHOWAVERAGES` | `00:3AA2` | `00:340A` | `0x340A` | opcodes `PUTAVER` | `00:3ABF` | | | `AVELOOP` | `00:3B10` | | | `RESETBOARD` | `00:3B29` | | | `RESETB` | `00:3B2E` | | | `BOARDLINED` | `00:3B41` | | | -`BOARDLINE` | `00:3B61` | | | +`BOARDLINE` | `00:3B61` | `00:358E` | `0x358E` | opcodes `PUTSCORE` | `00:3B73` | `00:35A0` | `0x35A0` | in-body `TOTOTAL` | `00:3B9C` | | | `UPTOTAL` | `00:3BA1` | | | `DIGITADD` | `00:3BA6` | | | `DUMPENDOBJ` | `00:3BB8` | `00:35F6` | `0x35F6` | unverified -`DUMP2BY2SEQU` | `00:3BBD` | `00:35FB` | `0x35FB` | entry +`DUMP2BY2SEQU` | `00:3BBD` | `00:35FB` | `0x35FB` | in-body `CHECKHIGH` | `00:3BE9` | | | `CHECKLINE` | `00:3BEE` | | | `CHECKCHR` | `00:3BF4` | | | @@ -1127,7 +1128,7 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `SHUNTLINE` | `00:3C11` | | | `PUTDIG` | `00:3C20` | | | `PRHIGHSCORES` | `00:3C39` | | | -`PRHIGHS` | `00:3C41` | | | +`PRHIGHS` | `00:3C41` | `00:3AA7` | `0x3AA7` | opcodes `PRHGH` | `00:3C85` | | | `DMATRANS` | `01:40E9` | | | `DMAL` | `01:40EF` | | | @@ -1158,8 +1159,8 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `PRAPPLES` | `01:434C` | | | `PRALOOP` | `01:4352` | | | `APPLEPIE` | `01:437F` | | | -`APLOOP` | `01:4388` | | | -`WORKAPPLE` | `01:439A` | | | +`APLOOP` | `01:4388` | `00:1942` | `0x1942` | opcodes +`WORKAPPLE` | `01:439A` | `00:1954` | `0x1954` | opcodes `NOAPPLE` | `01:43AD` | | | `NOLFALL` | `01:43B0` | | | `GOSPLIT` | `01:43B2` | | | @@ -1181,7 +1182,7 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `GETSP` | `01:44D8` | | | `GETAPPLE` | `01:44E3` | | | `GETAP` | `01:44E9` | `00:1BE4` | `0x1BE4` | unverified -`FLAGS` | `01:44F4` | `00:1BEF` | `0x1BEF` | entry +`FLAGS` | `01:44F4` | `00:1BEF` | `0x1BEF` | in-body `NOT3` | `01:451B` | | | `COLLISIONS` | `01:451F` | | | `BALLCP` | `01:4522` | `00:1F9D` | `0x1F9D` | in-body @@ -1219,15 +1220,15 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `INVALID` | `01:47DD` | | | `DOBALL` | `01:47E7` | | | `BADDIES` | `01:480E` | | | -`BADLOOP` | `01:4813` | | | +`BADLOOP` | `01:4813` | `00:2131` | `0x2131` | opcodes `WORKBADDIE` | `01:4835` | `00:2153` | `0x2153` | entry `NOBAD` | `01:4847` | | | -`CIRCLE` | `01:484C` | `00:216A` | `0x216A` | unverified +`CIRCLE` | `01:484C` | `00:216A` | `0x216A` | opcodes `MOVEBADF` | `01:4876` | | | `MOVEBAD` | `01:487B` | | | `FINDEXITS` | `01:4889` | | | `NOUP` | `01:48A4` | | | -`NORT` | `01:48B0` | | | +`NORT` | `01:48B0` | `00:21DD` | `0x21DD` | opcodes `NODW` | `01:48C7` | | | `NOLF` | `01:48D3` | | | `WORKEXITS` | `01:48D6` | | | @@ -1299,10 +1300,10 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `CHRDUMPER` | `01:4D4A` | | | `CDUMP` | `01:4D59` | | | `PRSCORE` | `01:4D64` | | | -`SCOREADD` | `01:4D81` | | | +`SCOREADD` | `01:4D81` | `00:2AAA` | `0x2AAA` | opcodes `UPSCORE` | `01:4D97` | | | `NOSCRP` | `01:4DA3` | | | -`CLOCK` | `01:4DA5` | | | +`CLOCK` | `01:4DA5` | `00:2ACE` | `0x2ACE` | opcodes `UPCLOCK` | `01:4DC0` | | | `STATUS` | `01:4DC5` | | | `STATSP` | `01:4DDE` | | | @@ -1312,17 +1313,17 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `FILLMAP` | `01:4E28` | | | `FILLBYTE` | `01:4E3F` | | | `PUTFOOD` | `01:4E76` | | | -`DRAWBLOCK` | `01:4E91` | | | +`DRAWBLOCK` | `01:4E91` | `00:2C07` | `0x2C07` | opcodes `DRWBLOCK` | `01:4EA1` | `00:2C17` | `0x2C17` | in-body -`DOTUNNEL` | `01:4EB9` | | | -`DRAWREP` | `01:4ED2` | | | +`DOTUNNEL` | `01:4EB9` | `00:2C2F` | `0x2C2F` | opcodes +`DRAWREP` | `01:4ED2` | `00:2C48` | `0x2C48` | opcodes `ENDTUNNEL` | `01:4EE6` | | | -`PUTCHERRY` | `01:4EEF` | | | +`PUTCHERRY` | `01:4EEF` | `00:2C65` | `0x2C65` | opcodes `PUTAPPLE` | `01:4F1F` | | | `COPYMAP` | `01:4F41` | | | `COPYM` | `01:4F4A` | | | -`COPYLETTER` | `01:4F53` | | | -`PUTLINE` | `01:4F80` | `00:2CFB` | `0x2CFB` | entry +`COPYLETTER` | `01:4F53` | `00:2CCE` | `0x2CCE` | opcodes +`PUTLINE` | `01:4F80` | `00:2CFB` | `0x2CFB` | in-body `KEYS` | `01:4FB6` | | | `PIXAD` | `01:4FED` | `00:2D63` | `0x2D63` | entry `GETMAPHI` | `01:5004` | `00:2D7A` | `0x2D7A` | entry @@ -1343,7 +1344,7 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `XROWS` | `01:50C7` | `00:2E5B` | `0x2E5B` | entry `DIVIDE` | `01:50DA` | | | `DIVE` | `01:50DE` | | | -`CREATESET` | `01:50E6` | | | +`CREATESET` | `01:50E6` | `00:2EAC` | `0x2EAC` | opcodes `CLEARSET` | `01:50FB` | | | `SHUNT` | `01:5106` | | | `DISPBIN` | `01:510F` | | | @@ -1353,7 +1354,7 @@ Procedure | Rebuilt bank:addr | Retail bank:addr | Retail file offset | Retail m `CLR` | `01:512B` | | | `HEXBYTE` | `01:5134` | | | `HEXWORD` | `01:5139` | | | -`PRHEX` | `01:5143` | | | +`PRHEX` | `01:5143` | `00:2F09` | `0x2F09` | opcodes `PRDEC` | `01:5158` | | | `PRDECDIGITS` | `01:5160` | | | `PRDEC1` | `01:516B` | | | diff --git a/public/css/theme.overrides.css b/public/css/theme.overrides.css index 75e0d7a4..c15b14f9 100644 --- a/public/css/theme.overrides.css +++ b/public/css/theme.overrides.css @@ -362,6 +362,40 @@ rr-sandpack { text-align: center; } +.post .mermaid.rr-mermaid-zoom { + position: relative; +} + +.post .mermaid.rr-mermaid-zoom .rr-mermaid-canvas { + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +.post .mermaid.rr-mermaid-zoom .rr-mermaid-controls { + position: absolute; + top: 0.5rem; + right: 0.5rem; + z-index: 2; + display: flex; + gap: 0.25rem; +} + +.post .mermaid.rr-mermaid-zoom .rr-mermaid-controls button { + border: 1px solid rgba(0, 0, 0, 0.25); + background: rgba(255, 255, 255, 0.9); + color: #111; + border-radius: 6px; + padding: 0.2rem 0.4rem; + font-size: 0.85rem; + line-height: 1; +} + +.dark .post .mermaid.rr-mermaid-zoom .rr-mermaid-controls button { + border-color: rgba(255, 255, 255, 0.25); + background: rgba(17, 17, 17, 0.9); + color: #fff; +} + .post .mermaid svg { max-width: 100%; height: auto; diff --git a/public/js/main.js b/public/js/main.js index 26f327d7..aa9b7557 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -289,12 +289,154 @@ function initializeMermaidDiagrams() { theme: "default" }); + function setupMermaidDiagramZoom() { + var mermaidContainers = document.querySelectorAll(".mermaid"); + + mermaidContainers.forEach(function(container) { + if (container.dataset.rrMermaidZoomInitialized === "true") { + return; + } + + var svg = container.querySelector("svg"); + if (!svg) { + return; + } + + container.dataset.rrMermaidZoomInitialized = "true"; + container.dataset.rrMermaidZoom = "1"; + container.classList.add("rr-mermaid-zoom"); + + var canvas = document.createElement("div"); + canvas.className = "rr-mermaid-canvas"; + + // Mermaid may output other nodes (e.g.
- + - +
Want More?
-

Follow us on Twitter & Bluesky!

+

Follow us on Twitter & Bluesky!

Don't miss out on Retro Reverse Engineering updates!

diff --git a/_includes/footer.html b/_includes/footer.html index 08794795..573db20f 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -15,9 +15,9 @@ - + - - +{% if page.mermaid == true or page.content contains '```mermaid' %} + +{% endif %} - - + + - - + + - - +{% if page.content contains 'twitter-tweet' or page.content contains 'twitter-timeline' %} +{% endif %} diff --git a/_includes/header.html b/_includes/header.html index e3067344..90d9e06b 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -3,8 +3,15 @@