Skip to content

Commit

Permalink
Change subsections to sections
Browse files Browse the repository at this point in the history
  • Loading branch information
mwenge committed Oct 30, 2023
1 parent da39f7e commit 9313e32
Show file tree
Hide file tree
Showing 22 changed files with 321 additions and 320 deletions.
Binary file modified out/iatheory_scrapbook.pdf
Binary file not shown.
8 changes: 4 additions & 4 deletions src/archaeo.tex
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ \chapter{A Little Archaeology}
and each long pulse by a pink pixel. Roughly speaking, gray is a shorthand for 0 bits and dark pixels for 1 bits.}
\end{figure}

\subsection{The Madness Begins}
\section{The Madness Begins}

This is what the start of the our \icode{iridis-alpha.tap} file looks like:

Expand Down Expand Up @@ -256,7 +256,7 @@ \subsection{The Madness Begins}

We have our first byte! It's \icode{89}!

\subsection{After Our First Real Byte}
\section{After Our First Real Byte}
With this precious commodity in hand we now continue reading off bytes in the same manner from the tape. Eventually we encounter
a signal that tells us we've reached the end of the data block, a 'Long-Short' sequence. When this happens we find we've
read 202 bytes in total:
Expand Down Expand Up @@ -436,7 +436,7 @@ \subsection{After Our First Real Byte}
rest of the data from the tape. That's right: we've read all this data from the tape to get a program for reading data
from the tape. This type of program is called a 'loader', or perhaps in an effort to justify it's existence, a 'turbo loader'.

\subsection{A Loader for your Loader}
\section{A Loader for your Loader}
\begin{figure}[H]
{
\begin{adjustbox}{width=10cm,center}
Expand Down Expand Up @@ -665,7 +665,7 @@ \subsection{A Loader for your Loader}
}\caption[]{Where the different parts of the game end up in memory.}
\end{figure}

\subsection{Putting an End to the Madness}
\section{Putting an End to the Madness}

With all the data read in you might wonder how the loader knows what to do next (i.e. to run the game) and how it
will know where to start running it from. The answer is given in the \icode{Header Data} for the final chunk of data:
Expand Down
9 changes: 0 additions & 9 deletions src/binary.tex
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
\clearpage
\vspace*{\fill}
\begin{figure}[H]
\centering
\includegraphics[width=5cm]{src/cover/title_page.png}%
\end{figure}
\vspace*{\fill}
\thispagestyle{empty}%

\chapter{We Need to Talk About Binary}
\lstset{style=6502Style}

Expand Down
10 changes: 5 additions & 5 deletions src/bonusphase.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ \chapter{Congoatulations Hotshot}

This decidedly ropey mini-game has a few interesting features.

\subsection{Entry Sequence}
\section{Entry Sequence}
\begin{figure}[H]
\centering
\includegraphics[width=10cm]{src/bonusphase/entry/bonus_entry_example.png}%
Expand Down Expand Up @@ -120,7 +120,7 @@ \subsection{Entry Sequence}
the raster interrupt in this way. Simply painting the screen with colored text would have been much
slower.

\subsection{Generating Maps}
\section{Generating Maps}
\begin{figure}[H]
\centering
\includegraphics[width=10cm]{src/bonusphase/bonus_phase.png}%
Expand Down Expand Up @@ -627,7 +627,7 @@ \subsection{Generating Maps}
two lines its writing by using the \icode{scrollLineOffset} variable to determine which
one its writing.
\subsubsection{Choosing a Map}
\subsection{Choosing a Map}
So now that we understand how the individual rows of the map are generated, the question
arises: how do we procedurally generate entire maps? Do we just pick random rows and
join them together? This wouldn't work well, since some rows aren't going to go well
Expand Down Expand Up @@ -759,7 +759,7 @@ \subsubsection{Choosing a Map}
\subsection{Some Very Ugly Sprites}
\section{Some Very Ugly Sprites}
For some reason the gilby sprite in the bonus phase is made impossibly ugly.
\begin{figure}[H]
Expand Down Expand Up @@ -843,7 +843,7 @@ \subsection{Some Very Ugly Sprites}
}\caption{There is no excuse for this.}
\end{figure}
\subsection{IBalls}
\section{IBalls}
\begin{figure}[H]
{
Expand Down
6 changes: 3 additions & 3 deletions src/bugs.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ \chapter{Iridis Oops!}
\label{sec:bugs}
\lstset{style=6502Style}

\subsection{The Byte that Broke}
\section{The Byte that Broke}
\begin{q}{Jeff Minter's Newsletter 'The Nature of the Beast' August 1986\cite{planner}}
We must apologise to some of the earliest purchasers of IA, as well... it
seems that some data was corrupted during the production phase of the
Expand Down Expand Up @@ -60,7 +60,7 @@ \subsection{The Byte that Broke}
$C003 8D F8 BF STA $BFF8
\end{lstlisting}

\subsection{Reappearing Enemies}
\section{Reappearing Enemies}

When you start a new game, enemies from the previous game show up in the first
wave. For most people starting out, this will take the form of a few residual
Expand Down Expand Up @@ -99,7 +99,7 @@ \subsection{Reappearing Enemies}
RTS
\end{lstlisting}

\subsection{A Sort of Cheat}
\section{A Sort of Cheat}

After a minute or two in the title screen, the game enters 'Attract Mode' and
plays a random level on autopilot for a few seconds. If you press F1 during
Expand Down
4 changes: 2 additions & 2 deletions src/bumph.tex
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
\chapter{Bumph}

\subsection{Cover}
\section{Cover}
\begin{figure}[H]
{
\begin{adjustbox}{width=10cm,center}
Expand All @@ -17,7 +17,7 @@ \subsection{Cover}
}\caption[]{Back Cover}
\end{figure}

\subsection{Manual}
\section{Manual}

\begin{figure}[H]
{
Expand Down
4 changes: 2 additions & 2 deletions src/disassembly.tex
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ \chapter{Some Disassembly Required}
STA $0318 ;Non-Maskable Interrupt
\end{lstlisting}

\subsubsection{Important Concept Number One: High Bytes and Low Bytes}
\subsection{Important Concept Number One: High Bytes and Low Bytes}
On the face of it these four instructions are doing something very simple. They are storing the value \$40
at address \$0319 and the value \$00 at \$0318. What they are actually doing is storing the address \$4000
in a place where the C64's 6502 CPU will be expected to look in a moment's time and take that as a command
Expand Down Expand Up @@ -227,7 +227,7 @@ \subsubsection{Important Concept Number One: High Bytes and Low Bytes}
you otherwise, but hopefully when we look at the use it is put to here you may begin to get a flavor of its
utility. Let's do that by looking at our second important concept.

\subsubsection{Important Concept Number Two: Interrupts}
\subsection{Important Concept Number Two: Interrupts}
\begin{lstlisting}[caption=It's an interrupt. And it's non-maskable.]
LDA #$40
STA $0319 ;Non-Maskable Interrupt
Expand Down
32 changes: 16 additions & 16 deletions src/gfx.tex
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ \section{Back in the Days}\index{Back in the days!GFX}



\subsection{Pen and Papers}
\section{Pen and Papers}
The artistic direction was established by the planner of the game. Their goal was to produce concept art and pose outlines in order to capture the essence of a character, as well as establishing proportions and movements. After that, senior artists took over for fine tuning.

\begin{q}{Eri Nakamura\cite{sf2devinterview}}
Expand Down Expand Up @@ -82,7 +82,7 @@ \subsection{Pen and Papers}



\subsection{Non-square Grid Paper}\label{artists_par}
\section{Non-square Grid Paper}\label{artists_par}
To draw both outlines and detailed versions of the sprites, artists used a special paper with a double grid system.

There was a "light" grid which used non-square proportions to match the CP-system video aspect ratio of 10:7. Artists were able to draw normally without having to worry about distortion since rectangle elements would match the CPS-1's stretched pixels.
Expand All @@ -93,7 +93,7 @@ \subsection{Non-square Grid Paper}\label{artists_par}



\subsection{OBJ Allocation}
\section{OBJ Allocation}

If breaking free of the rectangular sprites was a blessing for the artists, it was a problem for Capcom project managers. In an era where ROM chips were very expensive, a game was allocated a ROM budget at its beginning which it could not be exceeded.

Expand Down Expand Up @@ -152,7 +152,7 @@ \subsection{OBJ Allocation}

As the project progressed, the team scraped the bottom of the barrel and started to allocate space on a per-tile basis. They sometimes spread a character pose across multiple sheets, like in Dhalsim's sheet where portions of Blanka can be found.

\subsection{The Sheet System}
\section{The Sheet System}
Besides sparsely describing it, Capcom employees never elaborated on the sheet system. For which title and for how long it was used in total are questions that were never answered.

Thanks to an understanding of the GFXROM format, it is possible to peek back in time. The digital structure is an imprint of what the paper sheet looked like. These reconstructed sheets can provide answers.
Expand All @@ -176,7 +176,7 @@ \subsection{The Sheet System}
\img{smc-70_ad.jpg}


\subsection{Digitizing Art}\index{Computers!SONY SMC-70}
\section{Digitizing Art}\index{Computers!SONY SMC-70}

To digitize their drawings, Capcom employees used SMC-70 computers. Manufactured by Sony, the SMC-70 hit both the US and Japan market in the end of 1982. What is particularly noteworthy about this machine is that it is built around extensibility.

Expand All @@ -192,7 +192,7 @@ \subsection{Digitizing Art}\index{Computers!SONY SMC-70}
\caption*{A SMC-70 extended with a SMI-7012. Power supply at the very back}
\end{figure}

\subsubsection{Sony, the big iron}
\subsection{Sony, the big iron}
On one hand, the substantial list of extensions and peripherals, totaling nearly 40 pieces all made by Sony, is a testament to the company's commitment. On the other hand, it also embodies a desire to remain in control of the platform by keeping other manufacturers from contributing to the eco-system.

\begin{figure}[H]
Expand Down Expand Up @@ -223,15 +223,15 @@ \subsubsection{Sony, the big iron}
\end{figure}


\subsubsection{Noteworthy capabilities}
\subsection{Noteworthy capabilities}
The SMC-70 is notable for being the first computer to allow a 3.5" floppy reader (also invented by Sony in 1981) and its ability to display kanji characters via a ROM extension.

However, it is really when it comes to graphic capabilities that the machine stood out. Four resolutions were available, ranging from low-resolution 320x200 using sixteen colors up to high-resolution 640x200 in two colors.

The 16 colors mode was particularly interesting to Capcom artists since it was a perfect match to the CPS-1 pen system.


\subsection{Tiny Character Editor}
\section{Tiny Character Editor}

The SMC-70 had no ability to use a scanner. The digitization process was entirely achieved by hand. To help them in their task, artists used a tool called TCE (Tiny Character Editor). Although no screenshot ever emerged, Capcom employees gave a rough description of its minimalist approach.

Expand All @@ -240,7 +240,7 @@ \subsection{Tiny Character Editor}
\end{q}


\subsection{Dotting}
\section{Dotting}
For both SCROLL and OBJ elements, dotting was done on a tile basis. The artist's task was to look at their detailed graph paper drawing and decide, for each rectangular element in the tile, which color of the palette to use for it.

Pixel-art was a tedious and repetitive process which required a sense of aesthetic creativity to deal with the cases where a line crossed a pixel. Drop the pixel, include it plain, or attempt to anti-alias with a color in the palette were difficult choices to make.
Expand Down Expand Up @@ -269,7 +269,7 @@ \subsection{Dotting}
\end{q}


\subsection{Saving Tiles}
\section{Saving Tiles}
Artists attempted to reuse tiles as much as possible to reduce usage of the scarce ROM space available. In Street Fighter 2, there was only enough GFXROM for eleven challengers. Ken is a patchwork and a palette swap on top of Ryu tiles base. It "weighs" only 98,304 bytes. A remarkable achievement compared to characters such as Zangief (622,592 bytes), Honda (491,520 bytes), or Ryu (442,368 bytes).

\begin{minipage}[t]{0.19\linewidth}
Expand Down Expand Up @@ -336,7 +336,7 @@ \subsection{Saving Tiles}

\pagebreak

\subsection{Team Structure and Culture}
\section{Team Structure and Culture}

The art team had a strong hierarchy based on skills and seniority.

Expand All @@ -352,7 +352,7 @@ \subsection{Team Structure and Culture}

As layered as they were, operations were not set in stone and employees could climb the ladder quickly. Akiman was hired on "Dyn Side Arms" in 1986 as a SCROLL artist, the bottom of the artist ladder. Two years later, he was a Planner on Forgotten Worlds and went on to work on Final Fight and Street Fighter 2 in the same capacity.

\subsubsection{Work Ethic}
\subsection{Work Ethic}

A strong working culture was established from the very top.

Expand All @@ -366,7 +366,7 @@ \subsubsection{Work Ethic}
By the way, even now that I'm freelance, I still sleep under my computer desk at home.
\end{q}

\subsubsection{Poaching}
\subsection{Poaching}


Retaining talent was a top priority. The credit screen of Street Fighter II illustrates Capcom's cautiousness. Artists were only credited by their nicknames.
Expand All @@ -393,7 +393,7 @@ \subsubsection{Poaching}



\subsection{Inspiration}
\section{Inspiration}
For Street Fighter II, artists' inspiration came from various outlets.

Mangas such as "Yasunori Katō" helped to give birth to Dictator while Tao from "Harmagedon: Genma Wars" was part of the genesis of Chun-Li.
Expand Down Expand Up @@ -446,7 +446,7 @@ \section{Shapes and Sprites}
\end{figure}


\subsection{Sprite}
\section{Sprite}
A sprite is a collection of tiles with rectangular boundaries. As we will see in the m68k programming section it can be rendered by issuing a single draw call mentioning the offset in the sheet, the width in tiles and the height in tiles.

\begin{figure}[H]
Expand All @@ -458,7 +458,7 @@ \subsection{Sprite}

Another limitation (or advantage depending on how you look at it) is that a single palette is specified when placing the sprite draw command so all tiles must use it.

\subsection{Shape}
\section{Shape}

A much more efficient and flexible method is to use a Shape where tile layout can be arbitrary. It takes several draw calls to draw (tiles have to be specified one by one) but they can be located anywhere in a GFXROM.

Expand Down
Loading

0 comments on commit 9313e32

Please sign in to comment.