Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions _includes/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ <h4 class="footer-title">Help Us Provide the Correct Answer</h4>
<script defer src="/public/js/lightbox.js"></script>
<script defer src="/public/js/wow.min.js"></script>

{% if page.mermaid == true or page.content contains '```mermaid' %}
{% if include.has_mermaid %}
<script defer src="https://unpkg.com/mermaid@11/dist/mermaid.min.js"></script>
{% endif %}

Expand All @@ -55,6 +55,6 @@ <h4 class="footer-title">Help Us Provide the Correct Answer</h4>
</script>

<!-- This is to avoid having to include widgets.js every time a tweet is embedded -->
{% if page.content contains 'twitter-tweet' or page.content contains 'twitter-timeline' %}
{% if include.has_twitter %}
<script defer src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
{% endif %}
4 changes: 2 additions & 2 deletions _includes/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@


<!-- Enable responsiveness on mobile devices-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- RSS -->
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ '/atom.xml' | relative_url }}">

Expand All @@ -97,7 +97,7 @@
{% endif %}
</title>

<!-- <link rel="canonical" href="{{ site.baseurl }}/{{ page.permalink }}" /> -->
<link rel="canonical" href="{{ page.url | absolute_url }}" />

<!-- CSS -->

Expand Down
2 changes: 1 addition & 1 deletion _includes/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
width="45"
height="45"
alt="RetroReversing logo"
style="height: 45px; padding-right: 10px; margin-bottom: 10px;"
style="height: 45px; margin-right: 5px; margin-bottom: 10px;"
/>
<a href="/" class="logo">Retro Reversing</a>
<nav class="nav">
Expand Down
2 changes: 1 addition & 1 deletion _includes/sources-sidebar.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ <h5 class="widget-title">Sources <span>({{ include.references.size }})</span></h
</div>
{% endif %}
{% if include.hideTOC != true %}
<div class="post-directory widget widget-friends">
<div class="post-directory widget">
<h2 class="widget-title">Table of Contents</h2>
<nav class="post-directory-nav" aria-label="Table of contents">
<ul class="post-directory-list"></ul>
Expand Down
10 changes: 9 additions & 1 deletion _includes/video-header.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,15 @@
<div class="overlay-light"></div>
<div class="container">
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src="https://www.youtube.com/embed/{{ include.youtube }}" allowfullscreen></iframe>
<iframe
class="embed-responsive-item"
src="https://www.youtube-nocookie.com/embed/{{ include.youtube }}"
title="YouTube video"
loading="lazy"
referrerpolicy="strict-origin-when-cross-origin"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
></iframe>
</div>
</div>
</section>
Expand Down
2 changes: 1 addition & 1 deletion _layouts/404.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ <h5 class="widget-title">Recently Updated</h5>
</section>
<!-- /main -->

{% include_cached footer.html %}
{% include_cached footer.html has_mermaid=false has_twitter=false %}

<script>
(function () {
Expand Down
2 changes: 1 addition & 1 deletion _layouts/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
</section>
<!-- /main -->

{% include_cached footer.html %}
{% include_cached footer.html has_mermaid=false has_twitter=false %}

</body>
</html>
11 changes: 10 additions & 1 deletion _layouts/post.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,16 @@
</main>
<!-- /main -->

{% include_cached footer.html %}
{% assign has_mermaid = false %}
{% if page.mermaid == true or page.content contains '```mermaid' or page.content contains 'language-mermaid' or page.content contains 'lang-mermaid' %}
{% assign has_mermaid = true %}
{% endif %}

{% assign has_twitter = false %}
{% if page.content contains 'twitter-tweet' or page.content contains 'twitter-timeline' %}
{% assign has_twitter = true %}
{% endif %}
{% include_cached footer.html has_mermaid=has_mermaid has_twitter=has_twitter %}


</body>
Expand Down
18 changes: 9 additions & 9 deletions pages/Industry/GDC.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,15 @@ excerpt: Awesome list of Historic GDC Conferences including Audio and Video reco
updatedAt: '2024-11-23'
---

# GDC - Game Developer's Conference
<section class="postSection">
<img data-image-full="https://github.com/user-attachments/assets/d3665255-3b43-4787-819f-92a49fcd1030" class="lazy-load wow slideInLeft postImage" />

<div markdown="1" class="rr-post-markdown">
<img class="wow slideInLeft postImage"
src="https://github.com/user-attachments/assets/d3665255-3b43-4787-819f-92a49fcd1030"
width="578"
height="325"
alt="Game Developers Conference (GDC)"
style="margin-bottom: 10px;"
decoding="async"
fetchpriority="high"
/>

GDC stands for the "Game Developers Conference", which is an annual event held for professionals in the video game industry.

Expand All @@ -35,10 +39,6 @@ Originally it was called the **Computer Game Developers Conference** but the Com
GDC serves as a hub for game developers, publishers, artists, programmers, designers, and other industry experts to come together to discuss, share, and learn about the latest trends, technologies, and practices in game development.

The event includes a wide range of sessions, panels, workshops, and networking opportunities.
</div>
</section>




## CGDC 1988
Expand Down
27 changes: 11 additions & 16 deletions pages/consoles/gameboy/Mrdo.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,28 +37,27 @@ This video provides a brief look at the Game Boy port and is useful context befo
<iframe width="560" height="315" src="https://www.youtube.com/embed/WniQSM86SP4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

---
# Source code release
## Source code release
The original release is a single monolithic assembly file (`mrdo.asm`) containing code, data tables, and large blocks of embedded graphics data [^2].

Description from Paul Hughes [^1]:
> Many moons ago I debugged and finished off Ocean's Mr Do! for the original Game Boy.
>
> As **Joffa**, the late, great original author, decided to release the source code,
>
> As **Joffa**, the late, great original author, decided to release the source code,
> I thought I'd also put it up.

The header for the source file also mentions Wesley Knackers and gives a start date of June 28, 1990 and a last date of September 5, 1990:

```cpp
****************************************************************************
* *
* MR DO! (C) 1990 SPECIAL FX SOFTWARE LIMITED *
* *
* BY WESLEY KNACKERS *
* *
* START DATE 28/06/90 *
* LAST DATE 05/09/90 *
* *
*
* MR DO! (C) 1990 SPECIAL FX SOFTWARE LIMITED
*
* BY WESLEY KNACKERS
*
* START DATE 28/06/90
* LAST DATE 05/09/90
*
****************************************************************************
```

Expand All @@ -80,18 +79,14 @@ If you are new to Game Boy reverse engineering terminology, this quick glossary

---
# Code overview
The source is useful because it is not a "disassembly" or a ROM dump.
It is proper annotated game code with labels and routines that map closely onto the retail behaviour.
The source is useful because it is not a "disassembly" or a ROM dump, it is a rare case of real Game Boy source code being released online for a commerical game.

Some highlights worth skimming first:
* **Main loop** - `START` runs `SYSETUP`, `MENU`, and then enters a per-level loop that calls the gameplay subsystems in a predictable order.
* **State-machine style** - Multiple behaviours are selected via jump tables (`BADTAB`, `APPLETAB`, `LOGOTAB`, etc.) rather than long chains of branches.
* **2x2 meta-tiles** - The map is built from 4-tile blocks (top-left/top-right/bottom-left/bottom-right) with additional tables for "eaten" wall variants.
* **Split-screen rendering** - `SPLITSCREEN` does a status-window pass, then triggers OAM DMA for gameplay sprites after a timing delay.

---
# Deeper file tour
If you want to understand the game quickly, it helps to treat `mrdo.asm` as a handful of tightly-coupled subsystems that run in a strict per-frame pipeline.

## Frame pipeline
The `MAINLOOP` order is deliberate.
Expand Down
99 changes: 97 additions & 2 deletions public/css/post.css
Original file line number Diff line number Diff line change
Expand Up @@ -472,12 +472,108 @@ h5 + .emoji {

.post-directory-list li {
list-style: none;
float: none;
width: 100%;
margin: 0;
}

.post-directory-list li.jumper--H1 {
margin-left: 0;
margin-top: 10px;
}

.post-directory-list li.jumper--H2 {
margin-left: 12px;
}

.post-directory-list li.jumper--H3 {
margin-left: 24px;
}

.post-directory-list li.jumper--H4 {
margin-left: 32px;
}

.post-directory-list li.jumper--H5 {
margin-left: 38px;
}

.post-directory-list li.jumper--H6 {
margin-left: 44px;
}

.post-directory-list li.jumper--H1 > a {
font-size: 1.02rem;
font-weight: 800;
color: #006d96;
}

.post-directory-list li.jumper--H2 > a {
font-size: 0.95rem;
font-weight: 700;
color: #0085b6;
}

.post-directory-list li.jumper--H1 + li.jumper--H1,
.post-directory-list li.jumper--H2 + li.jumper--H2 {
margin-top: 8px;
}

.post-directory-list li.jumper--H3 > a {
font-size: 0.88rem;
font-weight: 500;
}

.post-directory-list li.jumper--H4 > a,
.post-directory-list li.jumper--H5 > a,
.post-directory-list li.jumper--H6 > a {
font-size: 0.84rem;
font-weight: 400;
}

.post-directory-list li.jumper--H3 > a,
.post-directory-list li.jumper--H4 > a,
.post-directory-list li.jumper--H5 > a,
.post-directory-list li.jumper--H6 > a {
position: relative;
padding-left: 14px;
}

.post-directory-list li.jumper--H3 > a::before,
.post-directory-list li.jumper--H4 > a::before,
.post-directory-list li.jumper--H5 > a::before,
.post-directory-list li.jumper--H6 > a::before {
content: "";
position: absolute;
left: 4px;
top: 50%;
transform: translateY(-50%);
width: 6px;
height: 1px;
background: rgba(0, 133, 182, 0.4);
}

.post-directory-list a {
display: block;
padding: 6px 8px;
border-radius: 6px;
text-decoration: none;
}

.post-directory-list li + li {
margin-top: 2px;
}

.post-directory .jumper {
margin: 0;
}

.post-directory a.jumper--child {
color: #848484;
}

.post-directory a.jumper--child:hover,
.post-directory a.jumper--child:focus {
color: #0085b6;
}

.post-directory-list a:focus-visible {
Expand All @@ -487,7 +583,6 @@ h5 + .emoji {

.reversefootnote {
display: inline-block;
padding: 6px 8px;
margin-left: 4px;
border-radius: 6px;
}
Expand Down
2 changes: 1 addition & 1 deletion public/js/generateTOC.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ $(document).ready(function(){
if (!$list.length) return;

if (tagName === topLevel) {
$list.append("<li><a class=\"jumper\" href=\"#" + id + "\">" + $this.text() + "</a></li>");
$list.append("<li class=\"jumper--"+tagName+"\"><a class=\"jumper\" href=\"#" + id + "\">" + $this.text() + "</a></li>");
} else {
$list.append("<li class=\"jumper--"+tagName+"\"><a class=\"jumper--child\" href=\"#" + id + "\">" + $this.text() + "</a></li>");
}
Expand Down
Loading
Loading