 Controlling the VDP is VERY simple, you&#39;re just looking at it the wrong way.<br><br>1 - The VDP is a seperate processor from the 68000<br><br>2 - Our ROM (ie, Sonic 2) can use the VDP by using two channels: the control port, and the data port.<br><br>3 - The control port is a register that is 1 long word (4 bytes) big. It is mapped by the 68000 at address &#036;c00004. It is NOT part of the 68-000&#39;s RAM, it is simply mapped to this address.<br><br>4 - The data port is the same.<br><br>5 - We can send encoded commands to the control port. <br><br>6 - If our commands require additional data, we send it to the data port.<br><br>7 - You&#39;re right, we do use loops. But they&#39;re simple.<br><br>8 - Here&#39;s a simple demo of how the VDP works.<br><br> move.l  #&#036;c0000000,   &#036;c00004;       &quot;&#036;c0000000&quot; is an encoded command that tells the VDP to put whatever we send to the data port into CRAM (the colour pallete). &#036;c0000000 is NOT the address of CRAM, but a command for the VDP.<br><br>move.w #&#036;0eee,  &#036;c00000;                now we send our colours to the VDP, by using the data port. The VDP copies this to CRAM.<br>move.w #&#036;0200,  &#036;c00000;<br><br>etc...<br><br><br>here&#39;s another example, this time, to send a tile to VRAM (where images tiles are stored, ready to be used).<br><br>move.l #&#036;40000000, &#036;c00004;  &quot;&#036;40000000&quot; is an encoded command that tells the VDP to copy whatever we send to the data port into VRAM.<br><br>move.l  #&#036;00000000, &#036;c00004; bitmap tiles are 8x8 pixels, so we send 8 long words (each nybble is a pixel, so one long word is 8 pixels) to the VDP.<br>move.l  #&#036;02000020, &#036;c00004;<br>move.l  #&#036;00022000, &#036;c00004;<br>move.l  #&#036;02000020, &#036;c00004;<br>move.l  #&#036;00222200, &#036;c00004;<br>move.l  #&#036;00000000, &#036;000004; <br>move.l  #&#036;00000000, &#036;000004;  <br>move.l  #&#036;00000000, &#036;000004; <br><br>There you go&#33; That&#39;s how the VDP works. <br><br>As for the BIOS, it&#39;s not really a BIOS or an Operating System, it&#39;s just a stupid little ROM which will lock up the Megadrive if our ROM doesn&#39;t use a correct header. On later versions of the Megadrive, ROMs must also write &#39;SEGA&#39; to a special register too, overwise the BIOS will throw a paddy and your Megadrive will catch fire and kill you.<br><br>The Megadrive&#39;s BIOS doesn&#39;t do anything else that&#39;s useful to us.<br><br>Hope this helps.   