\documentclass[english,aspectratio=169]{beamer} % TODO: for faster compilation: ,draft % ,handout,notes=show % ,notes=only \newsavebox{\verbbox} \usepackage{babel,url,graphicx,booktabs,alltt,xcolor,listings} \usepackage{subfig,hyperref} \usepackage[utf8]{inputenc} \usepackage[normalem]{ulem} \graphicspath{ {img/} } % hack required for TeXLive 2018 \makeatletter \let\@@magyar@captionfix\relax \makeatother % page numbers \addtobeamertemplate{navigation symbols}{}{% \usebeamerfont{footline}% \usebeamercolor[fg]{footline}% \hspace{1em}% \insertframenumber/\inserttotalframenumber } \usepackage{perpage} %the perpage package \MakePerPage{footnote} %the perpage package command \title{\textbf{Lovebyte 256 second seminar: Gameboy/Gameboy Color Sizecoding}} \author{\textbf{PoroCYon / K2\^{}TiTAN}} \date{} %\AtBeginSection[] %{ % \begin{frame} % \frametitle{Table of Contents} % \tableofcontents[currentsection] % \end{frame} %} \usetheme{Szeged} \usecolortheme{seagull} %\usetheme{Singapore} %\usecolortheme{default} %\usetheme{Hannover} %\usecolortheme{default} \begin{document} \frame{\titlepage} % frame options: plain (for large contents), shrink (lots of text), allowframebreaks, fragile % \pause, % \begin{columns}[align] \begin{column}[align]{5cm} ... % \begin{block,alertblock,exampleblock} % \include, dan pas \input \begin{frame}{What's a GB?} \begin{itemize} \item Z80-ish @ 4.2/8.4 MHz \item 8k/32k RAM, 8k/16k VRAM \item Background, window, 40 sprites (10/line) \end{itemize} \end{frame} \begin{frame}{Toolchains} \begin{description} \item[Assembler]: \texttt{rgbasm} from \texttt{rgbds}\footnote{\url{https://rgbds.gbdev.io/}}. \item[\texttt{rgbfix}]: to fix up cart headers (included in \texttt{rgbds}) \item[HW docs]: Pan Docs\footnote{\url{https://gbdev.io/pandocs/}}, GBDev wiki\footnote{\url{https://gbdev.gg8.se/wiki/articles/Main_Page}} \item[Emulator]: BGB, Gambatte, Sameboy, ... \end{description} \end{frame} \begin{frame}{Hurdle 1: cartridge entrypoint} \begin{itemize} \item Entrypoint at \texttt{+0x100} in file \item \texttt{+0x000}: RST, \texttt{+0x040}: IRQ (vblank etc) \end{itemize} ~\\ \begin{itemize} \item Skip RST and maybe IRQ, pad with zeros\footnote{ \url{https://www.pouet.net/prod.php?which=70163} does this, too} \end{itemize} \end{frame} \begin{frame}{Hurdle 2: cartridge header} \begin{itemize} \item \texttt{+0x100}: Entry point \item \texttt{+0x104..0x133}: Nintendo logo (include in safe version! skip in emulator version) \item \texttt{+0x134..0x14f}: Cartridge metadata (title, CGB, ROM/RAM size, ...) \end{itemize} ~\\ \begin{itemize} \item Drop IRQs (zeroed out) when specific metadata values (eg. CGB mode) are needed \end{itemize} \end{frame} \begin{frame}{Graphics and sound} Graphics: \begin{itemize} \item Tiled background, 2bpp, scrollable \item Window: smaller background, no transparency, less controllable \item Sprites: similar format as background, 8x8 or 8x16 \item CGB: palette of 32768 colors \item Init: \texttt{LCDC} register \end{itemize} Sound: \begin{itemize} \item 4-channel PSG \item More annoying to init (\texttt{NR50}, \texttt{NR51}, \texttt{NR52}) \end{itemize} \end{frame} \begin{frame}{Example prod} \begin{center} {\large ``Pocket party''\footnote{\url{https://www.pouet.net/prod.php?which=85348}} by PoroCYon/K2\^{}TiTAN\normalsize} (4k) \includegraphics[height=0.5\textheight]{pparty-screen.png} \begin{itemize} \item Most of the ROM is background image data \end{itemize} \end{center} \end{frame} \begin{frame}{Conclusion} \begin{center} {\Huge \textbf{Go make an intro!}} \end{center} \end{frame} %\begin{frame}{Questions} % \begin{center} % \Huge \textbf{Questions?} % \end{center} %\end{frame} \end{document}