mirror of
https://github.com/mtheall/vram.git
synced 2025-06-18 18:45:39 -04:00
vram bg initial version
This commit is contained in:
parent
5f908d6fb1
commit
4aedd5162e
56
vram.css
Normal file
56
vram.css
Normal file
@ -0,0 +1,56 @@
|
||||
body {
|
||||
font-family: "Courier New";
|
||||
font-size: 8pt;
|
||||
background-color: #DFDFFF;
|
||||
color: black;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
table, td {
|
||||
background: #E7E7FF;
|
||||
border-color: black;
|
||||
border-style: solid;
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
border-width: 1px 1px 1px 1px;
|
||||
text-align: right;
|
||||
vertical-align: top;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
table.main, td.main, tr.main {
|
||||
background-color: #DFDFFF;
|
||||
border-width: 4px;
|
||||
border-style: none;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
td { padding: 2px 10px 2px 10px; }
|
||||
|
||||
.left { text-align: left; }
|
||||
.center { text-align: center; }
|
||||
td.g { background: #00FF00; }
|
||||
td.r { background: #FF0000; }
|
||||
td.dr { background: #804000; }
|
||||
td.y { background: #FFFF00; }
|
||||
td.x { background: #777777; }
|
||||
td.black { background: #000000; }
|
||||
|
||||
#Content { margin: 8pt; }
|
||||
|
||||
#ShareLink {
|
||||
background: #E7E7FF;
|
||||
border-color: black;
|
||||
border-style: solid;
|
||||
border-width: 1px 1px 1px 1px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
#Report {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#FunctionCall { background: #FFFFFF; }
|
||||
|
683
vram.htm
Normal file
683
vram.htm
Normal file
@ -0,0 +1,683 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
|
||||
<meta name="description" content="View conflicts in your VRAM BG allocation for your NDS homebrew. This is the worksheet you need to satisfy in order to ensure non-corrupted BG graphics." />
|
||||
<meta name="keywords" content="nds, bg, background, vram, allocate, allocation, homebrew, nintendo ds" />
|
||||
<link rel="stylesheet" href="vram.css">
|
||||
<script type="text/javascript" src="vram.js"></script>
|
||||
<title>NDS Homebrew VRAM BG Allocation Conflict Viewer</title>
|
||||
</head>
|
||||
<body onLoad="loadp()">
|
||||
<div id="Content">
|
||||
<h1>NDS Homebrew VRAM BG Allocation Conflict Viewer</h1>
|
||||
<h4>For the VRAM Banks Selector tool <a href="banks.php">click here</a></h4>
|
||||
<h4>Please contact mtheall in #dsdev on irc.blitzed.org regarding errors, discrepancies, suggestions, or bugs with this tool</h4>
|
||||
<h4>Link for sharing: <span id='ShareLink'>Javascript must be enabled</span></h4>
|
||||
<hr />
|
||||
<form name='bgvram'>
|
||||
<table class='main'>
|
||||
<tr><td class='main' style='width:350px'>
|
||||
<h2>Base select</h2>
|
||||
<p>DISPCNT Map Base 64KB Step</p>
|
||||
<select name="MS" onChange="upd()">
|
||||
<option value="0" selected>0: 0x06000000-0x0600FFFF</option>
|
||||
<option value="1" >1: 0x06010000-0x0601FFFF</option>
|
||||
<option value="2" >2: 0x06020000-0x0602FFFF</option>
|
||||
<option value="3" >3: 0x06030000-0x0603FFFF</option>
|
||||
<option value="4" >4: 0x06040000-0x0604FFFF</option>
|
||||
<option value="5" >5: 0x06050000-0x0605FFFF</option>
|
||||
<option value="6" >6: 0x06060000-0x0606FFFF</option>
|
||||
<option value="7" >7: 0x06070000-0x0607FFFF</option>
|
||||
</select>
|
||||
<p>DISPCNT Tile Base 64KB Step</p>
|
||||
<select name="TS" onChange="upd()">
|
||||
<option value="0" selected>0: 0x06000000-0x0600FFFF</option>
|
||||
<option value="1" >1: 0x06010000-0x0601FFFF</option>
|
||||
<option value="2" >2: 0x06020000-0x0602FFFF</option>
|
||||
<option value="3" >3: 0x06030000-0x0603FFFF</option>
|
||||
<option value="4" >4: 0x06040000-0x0604FFFF</option>
|
||||
<option value="5" >5: 0x06050000-0x0605FFFF</option>
|
||||
<option value="6" >6: 0x06060000-0x0606FFFF</option>
|
||||
<option value="7" >7: 0x06070000-0x0607FFFF</option>
|
||||
</select>
|
||||
</td><td class='main'>
|
||||
<h2>Results</h2>
|
||||
<div id="Report"></div>
|
||||
<br />
|
||||
<div id="Mapping_Status"></div>
|
||||
<div id="Recommended_Mode"></div>
|
||||
<div id="Working_Engines"></div>
|
||||
<br />
|
||||
<div id="BG0_Usage"></div>
|
||||
<div id="BG1_Usage"></div>
|
||||
<div id="BG2_Usage"></div>
|
||||
<div id="BG3_Usage"></div>
|
||||
<br />
|
||||
</td></tr><tr><td class='main'>
|
||||
<h2>Options</h2>
|
||||
<table>
|
||||
<tr><td style='width:120px'><b>Background 0</b></td><td style='width:160px'>
|
||||
<select name="T0" onChange="upd()">
|
||||
<option value="NULL" selected>NULL</option>
|
||||
<option value="Text8bpp" >BgType_Text8bpp</option>
|
||||
<option value="Text4bpp" >BgType_Text4bpp</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
<tr id='BG_TS0' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="TS0" onChange="upd()">
|
||||
<option value="T_256x256" selected>BgSize_T_256x256</option>
|
||||
<option value="T_512x256" >BgSize_T_512x256</option>
|
||||
<option value="T_256x512" >BgSize_T_256x512</option>
|
||||
<option value="T_512x512" >BgSize_T_512x512</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_NT0' style='display:none'>
|
||||
<td>Maximum Tiles</td><td>
|
||||
<select name="NT0" onChange="upd()">
|
||||
<option value="32" selected><= 32 Tiles</option>
|
||||
<option value="64" ><= 64 Tiles</option>
|
||||
<option value="96" ><= 96 Tiles</option>
|
||||
<option value="128" ><= 128 Tiles</option>
|
||||
<option value="160" ><= 160 Tiles</option>
|
||||
<option value="192" ><= 192 Tiles</option>
|
||||
<option value="224" ><= 224 Tiles</option>
|
||||
<option value="256" ><= 256 Tiles</option>
|
||||
<option value="288" ><= 288 Tiles</option>
|
||||
<option value="320" ><= 320 Tiles</option>
|
||||
<option value="352" ><= 352 Tiles</option>
|
||||
<option value="384" ><= 384 Tiles</option>
|
||||
<option value="416" ><= 416 Tiles</option>
|
||||
<option value="448" ><= 448 Tiles</option>
|
||||
<option value="480" ><= 480 Tiles</option>
|
||||
<option value="512" ><= 512 Tiles</option>
|
||||
<option value="544" ><= 544 Tiles</option>
|
||||
<option value="576" ><= 576 Tiles</option>
|
||||
<option value="608" ><= 608 Tiles</option>
|
||||
<option value="640" ><= 640 Tiles</option>
|
||||
<option value="672" ><= 672 Tiles</option>
|
||||
<option value="704" ><= 704 Tiles</option>
|
||||
<option value="736" ><= 736 Tiles</option>
|
||||
<option value="768" ><= 768 Tiles</option>
|
||||
<option value="800" ><= 800 Tiles</option>
|
||||
<option value="832" ><= 832 Tiles</option>
|
||||
<option value="864" ><= 864 Tiles</option>
|
||||
<option value="896" ><= 896 Tiles</option>
|
||||
<option value="928" ><= 928 Tiles</option>
|
||||
<option value="960" ><= 960 Tiles</option>
|
||||
<option value="992" ><= 992 Tiles</option>
|
||||
<option value="1024" ><= 1024 Tiles</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_MB0' style='display:none'>
|
||||
<td>Map Base</td><td>
|
||||
<select name="MB0" onChange="upd()">
|
||||
<option value="0" selected>Map Base 0</option>
|
||||
<option value="1" >Map Base 1</option>
|
||||
<option value="2" >Map Base 2</option>
|
||||
<option value="3" >Map Base 3</option>
|
||||
<option value="4" >Map Base 4</option>
|
||||
<option value="5" >Map Base 5</option>
|
||||
<option value="6" >Map Base 6</option>
|
||||
<option value="7" >Map Base 7</option>
|
||||
<option value="8" >Map Base 8</option>
|
||||
<option value="9" >Map Base 9</option>
|
||||
<option value="10" >Map Base 10</option>
|
||||
<option value="11" >Map Base 11</option>
|
||||
<option value="12" >Map Base 12</option>
|
||||
<option value="13" >Map Base 13</option>
|
||||
<option value="14" >Map Base 14</option>
|
||||
<option value="15" >Map Base 15</option>
|
||||
<option value="16" >Map Base 16</option>
|
||||
<option value="17" >Map Base 17</option>
|
||||
<option value="18" >Map Base 18</option>
|
||||
<option value="19" >Map Base 19</option>
|
||||
<option value="20" >Map Base 20</option>
|
||||
<option value="21" >Map Base 21</option>
|
||||
<option value="22" >Map Base 22</option>
|
||||
<option value="23" >Map Base 23</option>
|
||||
<option value="24" >Map Base 24</option>
|
||||
<option value="25" >Map Base 25</option>
|
||||
<option value="26" >Map Base 26</option>
|
||||
<option value="27" >Map Base 27</option>
|
||||
<option value="28" >Map Base 28</option>
|
||||
<option value="29" >Map Base 29</option>
|
||||
<option value="30" >Map Base 30</option>
|
||||
<option value="31" >Map Base 31</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_TB0' style='display:none'>
|
||||
<td>Tile Base</td><td>
|
||||
<select name="TB0" onChange="upd()">
|
||||
<option value="0" selected>Tile Base 0</option>
|
||||
<option value="1" >Tile Base 1</option>
|
||||
<option value="2" >Tile Base 2</option>
|
||||
<option value="3" >Tile Base 3</option>
|
||||
<option value="4" >Tile Base 4</option>
|
||||
<option value="5" >Tile Base 5</option>
|
||||
<option value="6" >Tile Base 6</option>
|
||||
<option value="7" >Tile Base 7</option>
|
||||
<option value="8" >Tile Base 8</option>
|
||||
<option value="9" >Tile Base 9</option>
|
||||
<option value="10" >Tile Base 10</option>
|
||||
<option value="11" >Tile Base 11</option>
|
||||
<option value="12" >Tile Base 12</option>
|
||||
<option value="13" >Tile Base 13</option>
|
||||
<option value="14" >Tile Base 14</option>
|
||||
<option value="15" >Tile Base 15</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2"><div id="BG_DESC0" class="left"></div></td></tr>
|
||||
<tr><td colspan="2" style="background:#777799"></td></tr>
|
||||
<tr>
|
||||
<td><b>Background 1</b></td><td>
|
||||
<select name="T1" onChange="upd()">
|
||||
<option value="NULL" selected>NULL</option>
|
||||
<option value="Text8bpp" >BgType_Text8bpp</option>
|
||||
<option value="Text4bpp" >BgType_Text4bpp</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
<tr id='BG_TS1' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="TS1" onChange="upd()">
|
||||
<option value="T_256x256" selected>BgSize_T_256x256</option>
|
||||
<option value="T_512x256" >BgSize_T_512x256</option>
|
||||
<option value="T_256x512" >BgSize_T_256x512</option>
|
||||
<option value="T_512x512" >BgSize_T_512x512</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_NT1' style='display:none'>
|
||||
<td>Maximum Tiles</td><td>
|
||||
<select name="NT1" onChange="upd()">
|
||||
<option value="32" selected><= 32 Tiles</option>
|
||||
<option value="64" ><= 64 Tiles</option>
|
||||
<option value="96" ><= 96 Tiles</option>
|
||||
<option value="128" ><= 128 Tiles</option>
|
||||
<option value="160" ><= 160 Tiles</option>
|
||||
<option value="192" ><= 192 Tiles</option>
|
||||
<option value="224" ><= 224 Tiles</option>
|
||||
<option value="256" ><= 256 Tiles</option>
|
||||
<option value="288" ><= 288 Tiles</option>
|
||||
<option value="320" ><= 320 Tiles</option>
|
||||
<option value="352" ><= 352 Tiles</option>
|
||||
<option value="384" ><= 384 Tiles</option>
|
||||
<option value="416" ><= 416 Tiles</option>
|
||||
<option value="448" ><= 448 Tiles</option>
|
||||
<option value="480" ><= 480 Tiles</option>
|
||||
<option value="512" ><= 512 Tiles</option>
|
||||
<option value="544" ><= 544 Tiles</option>
|
||||
<option value="576" ><= 576 Tiles</option>
|
||||
<option value="608" ><= 608 Tiles</option>
|
||||
<option value="640" ><= 640 Tiles</option>
|
||||
<option value="672" ><= 672 Tiles</option>
|
||||
<option value="704" ><= 704 Tiles</option>
|
||||
<option value="736" ><= 736 Tiles</option>
|
||||
<option value="768" ><= 768 Tiles</option>
|
||||
<option value="800" ><= 800 Tiles</option>
|
||||
<option value="832" ><= 832 Tiles</option>
|
||||
<option value="864" ><= 864 Tiles</option>
|
||||
<option value="896" ><= 896 Tiles</option>
|
||||
<option value="928" ><= 928 Tiles</option>
|
||||
<option value="960" ><= 960 Tiles</option>
|
||||
<option value="992" ><= 992 Tiles</option>
|
||||
<option value="1024" ><= 1024 Tiles</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_MB1' style='display:none'>
|
||||
<td>Map Base</td><td>
|
||||
<select name="MB1" onChange="upd()">
|
||||
<option value="0" selected>Map Base 0</option>
|
||||
<option value="1" >Map Base 1</option>
|
||||
<option value="2" >Map Base 2</option>
|
||||
<option value="3" >Map Base 3</option>
|
||||
<option value="4" >Map Base 4</option>
|
||||
<option value="5" >Map Base 5</option>
|
||||
<option value="6" >Map Base 6</option>
|
||||
<option value="7" >Map Base 7</option>
|
||||
<option value="8" >Map Base 8</option>
|
||||
<option value="9" >Map Base 9</option>
|
||||
<option value="10" >Map Base 10</option>
|
||||
<option value="11" >Map Base 11</option>
|
||||
<option value="12" >Map Base 12</option>
|
||||
<option value="13" >Map Base 13</option>
|
||||
<option value="14" >Map Base 14</option>
|
||||
<option value="15" >Map Base 15</option>
|
||||
<option value="16" >Map Base 16</option>
|
||||
<option value="17" >Map Base 17</option>
|
||||
<option value="18" >Map Base 18</option>
|
||||
<option value="19" >Map Base 19</option>
|
||||
<option value="20" >Map Base 20</option>
|
||||
<option value="21" >Map Base 21</option>
|
||||
<option value="22" >Map Base 22</option>
|
||||
<option value="23" >Map Base 23</option>
|
||||
<option value="24" >Map Base 24</option>
|
||||
<option value="25" >Map Base 25</option>
|
||||
<option value="26" >Map Base 26</option>
|
||||
<option value="27" >Map Base 27</option>
|
||||
<option value="28" >Map Base 28</option>
|
||||
<option value="29" >Map Base 29</option>
|
||||
<option value="30" >Map Base 30</option>
|
||||
<option value="31" >Map Base 31</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_TB1' style='display:none'>
|
||||
<td>Tile Base</td><td>
|
||||
<select name="TB1" onChange="upd()">
|
||||
<option value="0" selected>Tile Base 0</option>
|
||||
<option value="1" >Tile Base 1</option>
|
||||
<option value="2" >Tile Base 2</option>
|
||||
<option value="3" >Tile Base 3</option>
|
||||
<option value="4" >Tile Base 4</option>
|
||||
<option value="5" >Tile Base 5</option>
|
||||
<option value="6" >Tile Base 6</option>
|
||||
<option value="7" >Tile Base 7</option>
|
||||
<option value="8" >Tile Base 8</option>
|
||||
<option value="9" >Tile Base 9</option>
|
||||
<option value="10" >Tile Base 10</option>
|
||||
<option value="11" >Tile Base 11</option>
|
||||
<option value="12" >Tile Base 12</option>
|
||||
<option value="13" >Tile Base 13</option>
|
||||
<option value="14" >Tile Base 14</option>
|
||||
<option value="15" >Tile Base 15</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2"><div id="BG_DESC1" class="left"></div></td></tr>
|
||||
<tr><td colspan="2" style="background:#777799"></td></tr>
|
||||
<tr>
|
||||
<td><b>Background 2</b></td><td>
|
||||
<select name="T2" onChange="upd()">
|
||||
<option value="NULL" selected>NULL</option>
|
||||
<option value="Text8bpp" >BgType_Text8bpp</option>
|
||||
<option value="Text4bpp" >BgType_Text4bpp</option>
|
||||
<option value="Rotation" >BgType_Rotation</option>
|
||||
<option value="ExRotation" >BgType_ExRotation</option>
|
||||
<option value="Bmp8" >BgType_Bmp8</option>
|
||||
<option value="Bmp16" >BgType_Bmp16</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
<tr id='BG_TS2' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="TS2" onChange="upd()">
|
||||
<option value="T_256x256" selected>BgSize_T_256x256</option>
|
||||
<option value="T_512x256" >BgSize_T_512x256</option>
|
||||
<option value="T_256x512" >BgSize_T_256x512</option>
|
||||
<option value="T_512x512" >BgSize_T_512x512</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_RS2' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="RS2" onChange="upd()">
|
||||
<option value="R_128x128" selected>BgSize_R_128x128</option>
|
||||
<option value="R_256x256" >BgSize_R_256x256</option>
|
||||
<option value="R_512x512" >BgSize_R_512x512</option>
|
||||
<option value="R_1024x1024" >BgSize_R_1024x1024</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_ERS2' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="ERS2" onChange="upd()">
|
||||
<option value="ER_128x128" selected>BgSize_ER_128x128</option>
|
||||
<option value="ER_256x256" >BgSize_ER_256x256</option>
|
||||
<option value="ER_512x512" >BgSize_ER_512x512</option>
|
||||
<option value="ER_1024x1024" >BgSize_ER_1024x1024</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_B8S2' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="B8S2" onChange="upd()">
|
||||
<option value="B8_128x128" selected>BgSize_B8_128x128</option>
|
||||
<option value="B8_256x192" >Note1: 256x192</option>
|
||||
<option value="B8_256x256" >BgSize_B8_256x256</option>
|
||||
<option value="B8_512x256" >BgSize_B8_512x256</option>
|
||||
<option value="B8_512x512" >BgSize_B8_512x512</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_B16S2' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="B16S2" onChange="upd()">
|
||||
<option value="B16_128x128" selected>BgSize_B16_128x128</option>
|
||||
<option value="B16_256x192" >Note1: 256x192</option>
|
||||
<option value="B16_256x256" >BgSize_B16_256x256</option>
|
||||
<option value="B16_512x256" >BgSize_B16_512x256</option>
|
||||
<option value="B16_512x512" >BgSize_B16_512x512</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_NT2' style='display:none'>
|
||||
<td>Maximum Tiles</td><td>
|
||||
<select name="NT2" onChange="upd()">
|
||||
<option value="32" selected><= 32 Tiles</option>
|
||||
<option value="64" ><= 64 Tiles</option>
|
||||
<option value="96" ><= 96 Tiles</option>
|
||||
<option value="128" ><= 128 Tiles</option>
|
||||
<option value="160" ><= 160 Tiles</option>
|
||||
<option value="192" ><= 192 Tiles</option>
|
||||
<option value="224" ><= 224 Tiles</option>
|
||||
<option value="256" ><= 256 Tiles</option>
|
||||
<option value="288" ><= 288 Tiles</option>
|
||||
<option value="320" ><= 320 Tiles</option>
|
||||
<option value="352" ><= 352 Tiles</option>
|
||||
<option value="384" ><= 384 Tiles</option>
|
||||
<option value="416" ><= 416 Tiles</option>
|
||||
<option value="448" ><= 448 Tiles</option>
|
||||
<option value="480" ><= 480 Tiles</option>
|
||||
<option value="512" ><= 512 Tiles</option>
|
||||
<option value="544" ><= 544 Tiles</option>
|
||||
<option value="576" ><= 576 Tiles</option>
|
||||
<option value="608" ><= 608 Tiles</option>
|
||||
<option value="640" ><= 640 Tiles</option>
|
||||
<option value="672" ><= 672 Tiles</option>
|
||||
<option value="704" ><= 704 Tiles</option>
|
||||
<option value="736" ><= 736 Tiles</option>
|
||||
<option value="768" ><= 768 Tiles</option>
|
||||
<option value="800" ><= 800 Tiles</option>
|
||||
<option value="832" ><= 832 Tiles</option>
|
||||
<option value="864" ><= 864 Tiles</option>
|
||||
<option value="896" ><= 896 Tiles</option>
|
||||
<option value="928" ><= 928 Tiles</option>
|
||||
<option value="960" ><= 960 Tiles</option>
|
||||
<option value="992" ><= 992 Tiles</option>
|
||||
<option value="1024" ><= 1024 Tiles</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_RNT2' style='display:none'>
|
||||
<td>Maximum Tiles</td><td>
|
||||
<select name="RNT2" onChange="upd()">
|
||||
<option value="32" selected><= 32 Tiles</option>
|
||||
<option value="64" ><= 64 Tiles</option>
|
||||
<option value="96" ><= 96 Tiles</option>
|
||||
<option value="128" ><= 128 Tiles</option>
|
||||
<option value="160" ><= 160 Tiles</option>
|
||||
<option value="192" ><= 192 Tiles</option>
|
||||
<option value="224" ><= 224 Tiles</option>
|
||||
<option value="256" ><= 256 Tiles</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_MB2' style='display:none'>
|
||||
<td>Map Base</td><td>
|
||||
<select name="MB2" onChange="upd()">
|
||||
<option value="0" selected>Map Base 0</option>
|
||||
<option value="1" >Map Base 1</option>
|
||||
<option value="2" >Map Base 2</option>
|
||||
<option value="3" >Map Base 3</option>
|
||||
<option value="4" >Map Base 4</option>
|
||||
<option value="5" >Map Base 5</option>
|
||||
<option value="6" >Map Base 6</option>
|
||||
<option value="7" >Map Base 7</option>
|
||||
<option value="8" >Map Base 8</option>
|
||||
<option value="9" >Map Base 9</option>
|
||||
<option value="10" >Map Base 10</option>
|
||||
<option value="11" >Map Base 11</option>
|
||||
<option value="12" >Map Base 12</option>
|
||||
<option value="13" >Map Base 13</option>
|
||||
<option value="14" >Map Base 14</option>
|
||||
<option value="15" >Map Base 15</option>
|
||||
<option value="16" >Map Base 16</option>
|
||||
<option value="17" >Map Base 17</option>
|
||||
<option value="18" >Map Base 18</option>
|
||||
<option value="19" >Map Base 19</option>
|
||||
<option value="20" >Map Base 20</option>
|
||||
<option value="21" >Map Base 21</option>
|
||||
<option value="22" >Map Base 22</option>
|
||||
<option value="23" >Map Base 23</option>
|
||||
<option value="24" >Map Base 24</option>
|
||||
<option value="25" >Map Base 25</option>
|
||||
<option value="26" >Map Base 26</option>
|
||||
<option value="27" >Map Base 27</option>
|
||||
<option value="28" >Map Base 28</option>
|
||||
<option value="29" >Map Base 29</option>
|
||||
<option value="30" >Map Base 30</option>
|
||||
<option value="31" >Map Base 31</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_TB2' style='display:none'>
|
||||
<td>Tile Base</td><td>
|
||||
<select name="TB2" onChange="upd()">
|
||||
<option value="0" selected>Tile Base 0</option>
|
||||
<option value="1" >Tile Base 1</option>
|
||||
<option value="2" >Tile Base 2</option>
|
||||
<option value="3" >Tile Base 3</option>
|
||||
<option value="4" >Tile Base 4</option>
|
||||
<option value="5" >Tile Base 5</option>
|
||||
<option value="6" >Tile Base 6</option>
|
||||
<option value="7" >Tile Base 7</option>
|
||||
<option value="8" >Tile Base 8</option>
|
||||
<option value="9" >Tile Base 9</option>
|
||||
<option value="10" >Tile Base 10</option>
|
||||
<option value="11" >Tile Base 11</option>
|
||||
<option value="12" >Tile Base 12</option>
|
||||
<option value="13" >Tile Base 13</option>
|
||||
<option value="14" >Tile Base 14</option>
|
||||
<option value="15" >Tile Base 15</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2"><div id="BG_DESC2" class="left"></div></td></tr>
|
||||
<tr><td colspan="2" style="background:#777799"></td></tr>
|
||||
<tr>
|
||||
<td><b>Background 3</b></td><td>
|
||||
<select name="T3" onChange="upd()">
|
||||
<option value="NULL" selected>NULL</option>
|
||||
<option value="Text8bpp" >BgType_Text8bpp</option>
|
||||
<option value="Text4bpp" >BgType_Text4bpp</option>
|
||||
<option value="Rotation" >BgType_Rotation</option>
|
||||
<option value="ExRotation" >BgType_ExRotation</option>
|
||||
<option value="Bmp8" >BgType_Bmp8</option>
|
||||
<option value="Bmp16" >BgType_Bmp16</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
<tr id='BG_TS3' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="TS3" onChange="upd()">
|
||||
<option value="T_256x256" selected>BgSize_T_256x256</option>
|
||||
<option value="T_512x256" >BgSize_T_512x256</option>
|
||||
<option value="T_256x512" >BgSize_T_256x512</option>
|
||||
<option value="T_512x512" >BgSize_T_512x512</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_RS3' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="RS3" onChange="upd()">
|
||||
<option value="R_128x128" selected>BgSize_R_128x128</option>
|
||||
<option value="R_256x256" >BgSize_R_256x256</option>
|
||||
<option value="R_512x512" >BgSize_R_512x512</option>
|
||||
<option value="R_1024x1024" >BgSize_R_1024x1024</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_ERS3' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="ERS3" onChange="upd()">
|
||||
<option value="ER_128x128" selected>BgSize_ER_128x128</option>
|
||||
<option value="ER_256x256" >BgSize_ER_256x256</option>
|
||||
<option value="ER_512x512" >BgSize_ER_512x512</option>
|
||||
<option value="ER_1024x1024" >BgSize_ER_1024x1024</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_B8S3' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="B8S3" onChange="upd()">
|
||||
<option value="B8_128x128" selected>BgSize_B8_128x128</option>
|
||||
<option value="B8_256x192" >Note1: 256x192</option>
|
||||
<option value="B8_256x256" >BgSize_B8_256x256</option>
|
||||
<option value="B8_512x256" >BgSize_B8_512x256</option>
|
||||
<option value="B8_512x512" >BgSize_B8_512x512</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_B16S3' style='display:none'>
|
||||
<td>Size</td><td>
|
||||
<select name="B16S3" onChange="upd()">
|
||||
<option value="B16_128x128" selected>BgSize_B16_128x128</option>
|
||||
<option value="B16_256x192" >Note1: 256x192</option>
|
||||
<option value="B16_256x256" >BgSize_B16_256x256</option>
|
||||
<option value="B16_512x256" >BgSize_B16_512x256</option>
|
||||
<option value="B16_512x512" >BgSize_B16_512x512</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_NT3' style='display:none'>
|
||||
<td>Maximum Tiles</td><td>
|
||||
<select name="NT3" onChange="upd()">
|
||||
<option value="32" selected><= 32 Tiles</option>
|
||||
<option value="64" ><= 64 Tiles</option>
|
||||
<option value="96" ><= 96 Tiles</option>
|
||||
<option value="128" ><= 128 Tiles</option>
|
||||
<option value="160" ><= 160 Tiles</option>
|
||||
<option value="192" ><= 192 Tiles</option>
|
||||
<option value="224" ><= 224 Tiles</option>
|
||||
<option value="256" ><= 256 Tiles</option>
|
||||
<option value="288" ><= 288 Tiles</option>
|
||||
<option value="320" ><= 320 Tiles</option>
|
||||
<option value="352" ><= 352 Tiles</option>
|
||||
<option value="384" ><= 384 Tiles</option>
|
||||
<option value="416" ><= 416 Tiles</option>
|
||||
<option value="448" ><= 448 Tiles</option>
|
||||
<option value="480" ><= 480 Tiles</option>
|
||||
<option value="512" ><= 512 Tiles</option>
|
||||
<option value="544" ><= 544 Tiles</option>
|
||||
<option value="576" ><= 576 Tiles</option>
|
||||
<option value="608" ><= 608 Tiles</option>
|
||||
<option value="640" ><= 640 Tiles</option>
|
||||
<option value="672" ><= 672 Tiles</option>
|
||||
<option value="704" ><= 704 Tiles</option>
|
||||
<option value="736" ><= 736 Tiles</option>
|
||||
<option value="768" ><= 768 Tiles</option>
|
||||
<option value="800" ><= 800 Tiles</option>
|
||||
<option value="832" ><= 832 Tiles</option>
|
||||
<option value="864" ><= 864 Tiles</option>
|
||||
<option value="896" ><= 896 Tiles</option>
|
||||
<option value="928" ><= 928 Tiles</option>
|
||||
<option value="960" ><= 960 Tiles</option>
|
||||
<option value="992" ><= 992 Tiles</option>
|
||||
<option value="1024" ><= 1024 Tiles</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_RNT3' style='display:none'>
|
||||
<td>Maximum Tiles</td><td>
|
||||
<select name="RNT3" onChange="upd()">
|
||||
<option value="32" selected><= 32 Tiles</option>
|
||||
<option value="64" ><= 64 Tiles</option>
|
||||
<option value="96" ><= 96 Tiles</option>
|
||||
<option value="128" ><= 128 Tiles</option>
|
||||
<option value="160" ><= 160 Tiles</option>
|
||||
<option value="192" ><= 192 Tiles</option>
|
||||
<option value="224" ><= 224 Tiles</option>
|
||||
<option value="256" ><= 256 Tiles</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_MB3' style='display:none'>
|
||||
<td>Map Base</td><td>
|
||||
<select name="MB3" onChange="upd()">
|
||||
<option value="0" selected>Map Base 0</option>
|
||||
<option value="1" >Map Base 1</option>
|
||||
<option value="2" >Map Base 2</option>
|
||||
<option value="3" >Map Base 3</option>
|
||||
<option value="4" >Map Base 4</option>
|
||||
<option value="5" >Map Base 5</option>
|
||||
<option value="6" >Map Base 6</option>
|
||||
<option value="7" >Map Base 7</option>
|
||||
<option value="8" >Map Base 8</option>
|
||||
<option value="9" >Map Base 9</option>
|
||||
<option value="10" >Map Base 10</option>
|
||||
<option value="11" >Map Base 11</option>
|
||||
<option value="12" >Map Base 12</option>
|
||||
<option value="13" >Map Base 13</option>
|
||||
<option value="14" >Map Base 14</option>
|
||||
<option value="15" >Map Base 15</option>
|
||||
<option value="16" >Map Base 16</option>
|
||||
<option value="17" >Map Base 17</option>
|
||||
<option value="18" >Map Base 18</option>
|
||||
<option value="19" >Map Base 19</option>
|
||||
<option value="20" >Map Base 20</option>
|
||||
<option value="21" >Map Base 21</option>
|
||||
<option value="22" >Map Base 22</option>
|
||||
<option value="23" >Map Base 23</option>
|
||||
<option value="24" >Map Base 24</option>
|
||||
<option value="25" >Map Base 25</option>
|
||||
<option value="26" >Map Base 26</option>
|
||||
<option value="27" >Map Base 27</option>
|
||||
<option value="28" >Map Base 28</option>
|
||||
<option value="29" >Map Base 29</option>
|
||||
<option value="30" >Map Base 30</option>
|
||||
<option value="31" >Map Base 31</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id='BG_TB3' style='display:none'>
|
||||
<td>Tile Base</td><td>
|
||||
<select name="TB3" onChange="upd()">
|
||||
<option value="0" selected>Tile Base 0</option>
|
||||
<option value="1" >Tile Base 1</option>
|
||||
<option value="2" >Tile Base 2</option>
|
||||
<option value="3" >Tile Base 3</option>
|
||||
<option value="4" >Tile Base 4</option>
|
||||
<option value="5" >Tile Base 5</option>
|
||||
<option value="6" >Tile Base 6</option>
|
||||
<option value="7" >Tile Base 7</option>
|
||||
<option value="8" >Tile Base 8</option>
|
||||
<option value="9" >Tile Base 9</option>
|
||||
<option value="10" >Tile Base 10</option>
|
||||
<option value="11" >Tile Base 11</option>
|
||||
<option value="12" >Tile Base 12</option>
|
||||
<option value="13" >Tile Base 13</option>
|
||||
<option value="14" >Tile Base 14</option>
|
||||
<option value="15" >Tile Base 15</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2"><div id="BG_DESC3" class="left"></div></td></tr>
|
||||
<tr><td colspan="2" style="background:#777799"></td></tr>
|
||||
</table>
|
||||
<p>Default console font uses 128 tiles.<br />(Choose "<= 128 Tiles")</p>
|
||||
<p>Default keyboard uses 857 tiles.<br />(Choose "<= 864 Tiles")</p>
|
||||
<p> </p>
|
||||
<h2>Function Call</h2>
|
||||
<table style='width:320px'>
|
||||
<thead>
|
||||
<tr><td class='left'><input type="checkbox" name="FuncCallSub" value="yes" onClick="upd()">Generate for Sub Engine</td></tr>
|
||||
</thead>
|
||||
<tr><td class='left' id='FunctionCall'>Javascript must be enabled</td></tr>
|
||||
</table>
|
||||
<p> </p>
|
||||
<table style='width:320px'>
|
||||
<tr><td colspan=3 class="left">Legend</td></tr>
|
||||
<tr><td class="g" style='width=32px'></td><td class="left">Okay!</td><td class="left"></td></tr>
|
||||
<tr><td class="y" style='width=32px'></td><td class="left">Warning!</td><td class="left">Safe if shared tileset graphics</td></tr>
|
||||
<tr><td class="r" style='width=32px'></td><td class="left">Error!</td><td class="left">You will definitely have corrupted graphics.<br>Additionally, zeromus will slap you.</td></tr>
|
||||
<tr><td class="dr" style='width=32px'></td><td class="left">Outside<br />Range!</td><td class="left">Graphics falls outside the valid range.</td></tr>
|
||||
<tr><td class="x" style='width=32px'></td><td class="left">Inaccessible</td><td class="left">Data here isn't accessed by the engine.</td></tr>
|
||||
<tr><td class="" style='width=32px'></td><td class="left">Empty</td><td class="left"></td></tr>
|
||||
</table>
|
||||
</td><td class='main'>
|
||||
<div id="VRAMBGAlloc">
|
||||
<div id='BGAllocationTable'>Javascript must be enabled</div>
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
</form>
|
||||
<hr />
|
||||
<p>Copyright 2011-2012, mtheall & JustBurn</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
646
vram.js
Normal file
646
vram.js
Normal file
@ -0,0 +1,646 @@
|
||||
function getParameterByName(name)
|
||||
{
|
||||
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
|
||||
var regexS = "[\\?&]" + name + "=([^&#]*)";
|
||||
var regex = new RegExp(regexS);
|
||||
var results = regex.exec(window.location.search);
|
||||
if(results == null)
|
||||
return "";
|
||||
else
|
||||
return decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||
}
|
||||
|
||||
function hasParameterByName(name)
|
||||
{
|
||||
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
|
||||
var regexS = "[\\?&]" + name + "=([^&#]*)";
|
||||
var regex = new RegExp(regexS);
|
||||
var results = regex.exec(window.location.search);
|
||||
if(results == null)
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
function V2Digits(size)
|
||||
{
|
||||
return Math.round(size * 100) / 100;
|
||||
}
|
||||
|
||||
var DISPCNT_MapBase = 0;
|
||||
var DISPCNT_TileBase = 0;
|
||||
|
||||
// &0 = Area valid
|
||||
// &8 = Area invalid
|
||||
// --
|
||||
// +0 = Empty
|
||||
// +1 = Valid (Tileset)
|
||||
// +2 = Valid (Bitmap)
|
||||
// +3 = Warning
|
||||
// +4 = Error
|
||||
var ColorCode = [
|
||||
"#DFDFFF", "#00FF00", "#00FF00", "#FFFF00", "#FF0000", "black", "black", "black",
|
||||
"#777777", "#408000", "#408000", "#808000", "#800000", "black", "black", "black"
|
||||
];
|
||||
var WorkModes = [
|
||||
0, 0, 0, 1, 3, 3, 3, -1,
|
||||
0, 0, 0, 1, 3, 3, 3, -1,
|
||||
0, 0, 0, 1, 3, 3, 3, -1,
|
||||
2, -1, -1, 2, 4, 4, 4, -1,
|
||||
5, -1, -1, -1, 5, 5, 5, -1,
|
||||
5, -1, -1, -1, 5, 5, 5, -1,
|
||||
5, -1, -1, -1, 5, 5, 5, -1
|
||||
];
|
||||
|
||||
var VRAM_BGMapping = Array();
|
||||
var VRAM_BGError = Array();
|
||||
var VRAM_BGSpace = Array();
|
||||
|
||||
var BGType_TSiz = [1, 2, 2, 4];
|
||||
var BGType_RSiz = [0.125, 1, 2, 8];
|
||||
var BGType_ERSiz = [0.25, 1, 4, 16];
|
||||
var BGType_B8Siz = [8, 24, 32, 64, 128];
|
||||
var BGType_B16Siz = [16, 48, 64, 128, 256];
|
||||
|
||||
var ShareLink;
|
||||
var Function_Call;
|
||||
var CPU_Access;
|
||||
|
||||
function loadp()
|
||||
{
|
||||
var i;
|
||||
|
||||
// Initialize 2D array
|
||||
for (i=0; i<8; i++) VRAM_BGMapping[i] = Array();
|
||||
|
||||
// Setup options
|
||||
if (hasParameterByName('MS')) document.forms['bgvram'].MS.options.selectedIndex = getParameterByName('MS');
|
||||
if (hasParameterByName('TS')) document.forms['bgvram'].TS.options.selectedIndex = getParameterByName('TS');
|
||||
if (hasParameterByName('T0')) document.forms['bgvram'].T0.options.selectedIndex = getParameterByName('T0');
|
||||
if (hasParameterByName('NT0')) document.forms['bgvram'].NT0.options.selectedIndex = (getParameterByName('NT0') / 32) - 1;
|
||||
if (hasParameterByName('MB0')) document.forms['bgvram'].MB0.options.selectedIndex = getParameterByName('MB0');
|
||||
if (hasParameterByName('TB0')) document.forms['bgvram'].TB0.options.selectedIndex = getParameterByName('TB0');
|
||||
if (hasParameterByName('S0')) document.forms['bgvram'].TS0.options.selectedIndex = getParameterByName('S0');
|
||||
if (hasParameterByName('T1')) document.forms['bgvram'].T1.options.selectedIndex = getParameterByName('T1');
|
||||
if (hasParameterByName('NT1')) document.forms['bgvram'].NT1.options.selectedIndex = (getParameterByName('NT1') / 32) - 1;
|
||||
if (hasParameterByName('MB1')) document.forms['bgvram'].MB1.options.selectedIndex = getParameterByName('MB1');
|
||||
if (hasParameterByName('TB1')) document.forms['bgvram'].TB1.options.selectedIndex = getParameterByName('TB1');
|
||||
if (hasParameterByName('S1')) document.forms['bgvram'].TS1.options.selectedIndex = getParameterByName('S1');
|
||||
if (hasParameterByName('T2')) document.forms['bgvram'].T2.options.selectedIndex = getParameterByName('T2');
|
||||
if (hasParameterByName('NT2')) document.forms['bgvram'].NT2.options.selectedIndex = (getParameterByName('NT2') / 32) - 1;
|
||||
if (hasParameterByName('MB2')) document.forms['bgvram'].MB2.options.selectedIndex = getParameterByName('MB2');
|
||||
if (hasParameterByName('TB2')) document.forms['bgvram'].TB2.options.selectedIndex = getParameterByName('TB2');
|
||||
if (hasParameterByName('S2')) {
|
||||
document.forms['bgvram'].TS2.options.selectedIndex = getParameterByName('S2');
|
||||
document.forms['bgvram'].RS2.options.selectedIndex = getParameterByName('S2');
|
||||
document.forms['bgvram'].ERS2.options.selectedIndex = getParameterByName('S2');
|
||||
document.forms['bgvram'].B8S2.options.selectedIndex = getParameterByName('S2');
|
||||
document.forms['bgvram'].B16S2.options.selectedIndex = getParameterByName('S2');
|
||||
}
|
||||
if (hasParameterByName('T3')) document.forms['bgvram'].T3.options.selectedIndex = getParameterByName('T3');
|
||||
if (hasParameterByName('NT3')) document.forms['bgvram'].NT3.options.selectedIndex = (getParameterByName('NT3') / 32) - 1;
|
||||
if (hasParameterByName('MB3')) document.forms['bgvram'].MB3.options.selectedIndex = getParameterByName('MB3');
|
||||
if (hasParameterByName('TB3')) document.forms['bgvram'].TB3.options.selectedIndex = getParameterByName('TB3');
|
||||
if (hasParameterByName('S3')) {
|
||||
document.forms['bgvram'].TS3.options.selectedIndex = getParameterByName('S3');
|
||||
document.forms['bgvram'].RS3.options.selectedIndex = getParameterByName('S3');
|
||||
document.forms['bgvram'].ERS3.options.selectedIndex = getParameterByName('S3');
|
||||
document.forms['bgvram'].B8S3.options.selectedIndex = getParameterByName('S3');
|
||||
document.forms['bgvram'].B16S3.options.selectedIndex = getParameterByName('S3');
|
||||
}
|
||||
|
||||
// Update
|
||||
upd();
|
||||
}
|
||||
|
||||
function bg_alloc_from(bgnum, bgtype, size, maxtiles, mapbase, tilebase)
|
||||
{
|
||||
var i, j, sz, sz_t, sz_m, bgcstatus;
|
||||
bgnum *= 2;
|
||||
|
||||
if (bgtype == 0) return;
|
||||
if (bgtype == 1) {
|
||||
sz_t = maxtiles / 32;
|
||||
sz = Math.ceil(sz_t);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_TileBase * 32) + (tilebase * 8) + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum][j]++;
|
||||
}
|
||||
|
||||
sz_m = BGType_TSiz[size];
|
||||
sz = Math.ceil(sz_m);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_MapBase * 32) + mapbase + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum+1][j]++;
|
||||
}
|
||||
} else if (bgtype == 2) {
|
||||
sz_t = maxtiles / 64;
|
||||
sz = Math.ceil(sz_t);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_TileBase * 32) + (tilebase * 8) + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum][j]++;
|
||||
}
|
||||
|
||||
sz_m = BGType_TSiz[size];
|
||||
sz = Math.ceil(sz_m);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_MapBase * 32) + mapbase + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum+1][j]++;
|
||||
}
|
||||
} else if (bgtype == 3) {
|
||||
sz_t = maxtiles / 32;
|
||||
sz = Math.ceil(sz_t);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_TileBase * 32) + (tilebase * 8) + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum][j]++;
|
||||
}
|
||||
|
||||
sz_m = BGType_RSiz[size];
|
||||
sz = Math.ceil(sz_m);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_MapBase * 32) + mapbase + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum+1][j]++;
|
||||
}
|
||||
} else if (bgtype == 4) {
|
||||
sz_t = maxtiles / 32;
|
||||
sz = Math.ceil(sz_t);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_TileBase * 32) + (tilebase * 8) + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum][j]++;
|
||||
}
|
||||
|
||||
sz_m = BGType_ERSiz[size];
|
||||
sz = Math.ceil(sz_m);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_MapBase * 32) + mapbase + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum+1][j]++;
|
||||
}
|
||||
} else if (bgtype == 5) {
|
||||
sz_t = BGType_B8Siz[size];
|
||||
sz = Math.ceil(sz_t);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_MapBase * 32) + (mapbase * 8) + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum][j]+=2;
|
||||
}
|
||||
|
||||
sz_m = 0;
|
||||
} else if (bgtype == 6) {
|
||||
sz_t = BGType_B16Siz[size];
|
||||
sz = Math.ceil(sz_t);
|
||||
for (i=0; i<sz; i++) {
|
||||
j = (DISPCNT_MapBase * 32) + (mapbase * 8) + i;
|
||||
if ((j >= 0) && (j < 256)) VRAM_BGMapping[bgnum][j]+=2;
|
||||
}
|
||||
|
||||
sz_m = 0;
|
||||
}
|
||||
VRAM_BGSpace[bgnum] = sz_t * 2;
|
||||
VRAM_BGSpace[bgnum+1] = sz_m * 2;
|
||||
}
|
||||
|
||||
function bg_alloc_conflict()
|
||||
{
|
||||
var i, j, bg, numweight;
|
||||
var ret = 1;
|
||||
for (i=0; i<256; i++) {
|
||||
VRAM_BGError[i] = 0;
|
||||
numweight = 0;
|
||||
for (bg=0; bg<8; bg+=2) {
|
||||
// Mark weight
|
||||
if ((VRAM_BGMapping[bg][i] & 7) == 1) numweight++;
|
||||
if ((VRAM_BGMapping[bg][i] & 7) >= 2) numweight += numweight+1;
|
||||
if ((VRAM_BGMapping[bg+1][i] & 7) != 0) numweight += 2;
|
||||
if (VRAM_BGMapping[bg][i] > 8) numweight += 4;
|
||||
if (VRAM_BGMapping[bg+1][i] > 8) numweight += 4;
|
||||
}
|
||||
if (numweight == 2) {
|
||||
// Mark warnings
|
||||
for (bg=0; bg<8; bg+=2) {
|
||||
if ((VRAM_BGMapping[bg][i] & 7) > 0) {
|
||||
VRAM_BGMapping[bg][i] = (VRAM_BGMapping[bg][i] & 8) + 3;
|
||||
ret = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (numweight >= 3) {
|
||||
// Mark errors
|
||||
for (bg=0; bg<8; bg+=2) {
|
||||
if ((VRAM_BGMapping[bg][i] & 7) > 0) VRAM_BGMapping[bg][i] = (VRAM_BGMapping[bg][i] & 8) + 4;
|
||||
if ((VRAM_BGMapping[bg+1][i] & 7) > 0) VRAM_BGMapping[bg+1][i] = (VRAM_BGMapping[bg+1][i] & 8) + 4;
|
||||
}
|
||||
VRAM_BGError[i] = 1;
|
||||
ret = 3;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
function bg_allocation()
|
||||
{
|
||||
var i, sz, szopt, maxtiles, mapbase, tilebase;
|
||||
var bgtype0, bgtype1, bgtype2, bgtype3;
|
||||
var wmode, funccallsub;
|
||||
|
||||
// Set DISPCNT offsets
|
||||
DISPCNT_MapBase = document.forms['bgvram'].MS.options.selectedIndex;
|
||||
if (DISPCNT_MapBase != 0) ShareLink += "&MS=" + DISPCNT_MapBase;
|
||||
DISPCNT_TileBase = document.forms['bgvram'].TS.options.selectedIndex;
|
||||
if (DISPCNT_TileBase != 0) ShareLink += "&TS=" + DISPCNT_TileBase;
|
||||
funccallsub = document.forms['bgvram'].FuncCallSub.checked;
|
||||
|
||||
// Setup array
|
||||
for (i=0; i<256; i++) {
|
||||
a = -(DISPCNT_TileBase * 4) + (i / 8);
|
||||
a = ((a >= 0) && (a < 16)) ? 0 : 8;
|
||||
b = -(DISPCNT_MapBase * 32) + i;
|
||||
b = ((b >= 0) && (b < 32)) ? 0 : 8;
|
||||
VRAM_BGMapping[0][i] = a;
|
||||
VRAM_BGMapping[1][i] = b;
|
||||
VRAM_BGMapping[2][i] = a;
|
||||
VRAM_BGMapping[3][i] = b;
|
||||
VRAM_BGMapping[4][i] = a;
|
||||
VRAM_BGMapping[5][i] = b;
|
||||
VRAM_BGMapping[6][i] = a;
|
||||
VRAM_BGMapping[7][i] = b;
|
||||
}
|
||||
for (i=0; i<8; i++) VRAM_BGSpace[i] = 0;
|
||||
|
||||
// Show/Hide controls
|
||||
i = document.forms['bgvram'].T0.options.selectedIndex;
|
||||
if (i > 0) {
|
||||
document.getElementById('BG_TS0').style.display = "";
|
||||
document.getElementById('BG_NT0').style.display = "";
|
||||
document.getElementById('BG_MB0').style.display = "";
|
||||
document.getElementById('BG_TB0').style.display = "";
|
||||
} else {
|
||||
document.getElementById('BG_TS0').style.display = "none";
|
||||
document.getElementById('BG_NT0').style.display = "none";
|
||||
document.getElementById('BG_MB0').style.display = "none";
|
||||
document.getElementById('BG_TB0').style.display = "none";
|
||||
}
|
||||
i = document.forms['bgvram'].T1.options.selectedIndex;
|
||||
if (i > 0) {
|
||||
document.getElementById('BG_TS1').style.display = "";
|
||||
document.getElementById('BG_NT1').style.display = "";
|
||||
document.getElementById('BG_MB1').style.display = "";
|
||||
document.getElementById('BG_TB1').style.display = "";
|
||||
} else {
|
||||
document.getElementById('BG_TS1').style.display = "none";
|
||||
document.getElementById('BG_NT1').style.display = "none";
|
||||
document.getElementById('BG_MB1').style.display = "none";
|
||||
document.getElementById('BG_TB1').style.display = "none";
|
||||
}
|
||||
i = document.forms['bgvram'].T2.options.selectedIndex;
|
||||
if (i > 0) {
|
||||
document.getElementById('BG_TS2').style.display = (i < 3) ? "" : "none";
|
||||
document.getElementById('BG_RS2').style.display = (i == 3) ? "" : "none";
|
||||
document.getElementById('BG_ERS2').style.display = (i == 4) ? "" : "none";
|
||||
document.getElementById('BG_B8S2').style.display = (i == 5) ? "" : "none";
|
||||
document.getElementById('BG_B16S2').style.display = (i == 6) ? "" : "none";
|
||||
document.getElementById('BG_NT2').style.display = ((i != 3) && (i < 5)) ? "" : "none";
|
||||
document.getElementById('BG_RNT2').style.display = (i == 3) ? "" : "none";
|
||||
document.getElementById('BG_MB2').style.display = "";
|
||||
document.getElementById('BG_TB2').style.display = (i < 5) ? "" : "none";
|
||||
} else {
|
||||
document.getElementById('BG_TS2').style.display = "none";
|
||||
document.getElementById('BG_RS2').style.display = "none";
|
||||
document.getElementById('BG_ERS2').style.display = "none";
|
||||
document.getElementById('BG_B8S2').style.display = "none";
|
||||
document.getElementById('BG_B16S2').style.display = "none";
|
||||
document.getElementById('BG_NT2').style.display = "none";
|
||||
document.getElementById('BG_RNT2').style.display = "none";
|
||||
document.getElementById('BG_MB2').style.display = "none";
|
||||
document.getElementById('BG_TB2').style.display = "none";
|
||||
}
|
||||
i = document.forms['bgvram'].T3.options.selectedIndex;
|
||||
if (i > 0) {
|
||||
document.getElementById('BG_TS3').style.display = (i < 3) ? "" : "none";
|
||||
document.getElementById('BG_RS3').style.display = (i == 3) ? "" : "none";
|
||||
document.getElementById('BG_ERS3').style.display = (i == 4) ? "" : "none";
|
||||
document.getElementById('BG_B8S3').style.display = (i == 5) ? "" : "none";
|
||||
document.getElementById('BG_B16S3').style.display = (i == 6) ? "" : "none";
|
||||
document.getElementById('BG_NT3').style.display = ((i != 3) && (i < 5)) ? "" : "none";
|
||||
document.getElementById('BG_RNT3').style.display = (i == 3) ? "" : "none";
|
||||
document.getElementById('BG_MB3').style.display = "";
|
||||
document.getElementById('BG_TB3').style.display = (i < 5) ? "" : "none";
|
||||
} else {
|
||||
document.getElementById('BG_TS3').style.display = "none";
|
||||
document.getElementById('BG_RS3').style.display = "none";
|
||||
document.getElementById('BG_ERS3').style.display = "none";
|
||||
document.getElementById('BG_B8S3').style.display = "none";
|
||||
document.getElementById('BG_B16S3').style.display = "none";
|
||||
document.getElementById('BG_NT3').style.display = "none";
|
||||
document.getElementById('BG_RNT3').style.display = "none";
|
||||
document.getElementById('BG_MB3').style.display = "none";
|
||||
document.getElementById('BG_TB3').style.display = "none";
|
||||
}
|
||||
|
||||
// Map BG 0
|
||||
bgtype0 = document.forms['bgvram'].T0.options.selectedIndex;
|
||||
maxtiles = document.forms['bgvram'].NT0.options[document.forms['bgvram'].NT0.options.selectedIndex].value;
|
||||
mapbase = document.forms['bgvram'].MB0.options.selectedIndex;
|
||||
tilebase = document.forms['bgvram'].TB0.options.selectedIndex;
|
||||
if (bgtype0 > 0) {
|
||||
ShareLink += "&T0=" + bgtype0 + "&NT0=" + maxtiles + "&MB0=" + mapbase + "&TB0=" + tilebase;
|
||||
}
|
||||
switch (bgtype0)
|
||||
{
|
||||
case 0: {
|
||||
sz = 0;
|
||||
document.getElementById('BG_DESC0').innerHTML = "* Background is unused";
|
||||
} break;
|
||||
case 1: {
|
||||
sz = document.forms['bgvram'].TS0.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].TS0.options;
|
||||
document.getElementById('BG_DESC0').innerHTML = "* 256 colors tiles<br />* 16 Extended Palettes";
|
||||
} break;
|
||||
case 2: {
|
||||
sz = document.forms['bgvram'].TS0.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].TS0.options;
|
||||
document.getElementById('BG_DESC0').innerHTML = "* 16 colors tiles<br />* 16 Palettes";
|
||||
} break;
|
||||
}
|
||||
if (bgtype0 > 0) {
|
||||
ShareLink += "&S0=" + sz;
|
||||
if (funccallsub) Function_Call += "bgInitSub(0"; else Function_Call += "bgInit(0";
|
||||
Function_Call += ", BgType_" + document.forms['bgvram'].T0.options[document.forms['bgvram'].T0.options.selectedIndex].value;
|
||||
Function_Call += ", BgSize_" + szopt[szopt.selectedIndex].value + ", " + mapbase + ", " + tilebase + ");<br />";
|
||||
}
|
||||
bg_alloc_from(0, bgtype0, sz, maxtiles, mapbase, tilebase);
|
||||
|
||||
// Map BG 1
|
||||
bgtype1 = document.forms['bgvram'].T1.options.selectedIndex;
|
||||
maxtiles = document.forms['bgvram'].NT1.options[document.forms['bgvram'].NT1.options.selectedIndex].value;
|
||||
mapbase = document.forms['bgvram'].MB1.options.selectedIndex;
|
||||
tilebase = document.forms['bgvram'].TB1.options.selectedIndex;
|
||||
if (bgtype1 > 0) {
|
||||
ShareLink += "&T1=" + bgtype1 + "&NT1=" + maxtiles + "&MB1=" + mapbase + "&TB1=" + tilebase;
|
||||
}
|
||||
switch (bgtype1)
|
||||
{
|
||||
case 0: {
|
||||
sz = 0;
|
||||
document.getElementById('BG_DESC1').innerHTML = "* Background is unused";
|
||||
} break;
|
||||
case 1: {
|
||||
sz = document.forms['bgvram'].TS1.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].TS1.options;
|
||||
document.getElementById('BG_DESC1').innerHTML = "* 256 colors tiles<br />* 16 Extended Palettes";
|
||||
} break;
|
||||
case 2: {
|
||||
sz = document.forms['bgvram'].TS1.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].TS1.options;
|
||||
document.getElementById('BG_DESC1').innerHTML = "* 16 colors tiles<br />* 16 Palettes";
|
||||
} break;
|
||||
}
|
||||
if (bgtype1 > 0) {
|
||||
ShareLink += "&S1=" + sz;
|
||||
if (funccallsub) Function_Call += "bgInitSub(1"; else Function_Call += "bgInit(1";
|
||||
Function_Call += ", BgType_" + document.forms['bgvram'].T1.options[document.forms['bgvram'].T1.options.selectedIndex].value;
|
||||
Function_Call += ", BgSize_" + szopt[szopt.selectedIndex].value + ", " + mapbase + ", " + tilebase + ");<br />";
|
||||
}
|
||||
bg_alloc_from(1, bgtype1, sz, maxtiles, mapbase, tilebase);
|
||||
|
||||
// Map BG 2
|
||||
bgtype2 = document.forms['bgvram'].T2.options.selectedIndex;
|
||||
if (bgtype2 == 3) maxtiles = document.forms['bgvram'].RNT2.options[document.forms['bgvram'].RNT2.options.selectedIndex].value;
|
||||
else maxtiles = document.forms['bgvram'].NT2.options[document.forms['bgvram'].NT2.options.selectedIndex].value;
|
||||
mapbase = document.forms['bgvram'].MB2.options.selectedIndex;
|
||||
tilebase = document.forms['bgvram'].TB2.options.selectedIndex;
|
||||
if (bgtype2 > 0) {
|
||||
ShareLink += "&T2=" + bgtype2 + "&NT2=" + maxtiles + "&MB2=" + mapbase + "&TB2=" + tilebase;
|
||||
}
|
||||
switch (bgtype2)
|
||||
{
|
||||
case 0: {
|
||||
sz = 0;
|
||||
document.getElementById('BG_DESC2').innerHTML = "* Background is unused";
|
||||
} break;
|
||||
case 1: {
|
||||
sz = document.forms['bgvram'].TS2.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].TS2.options;
|
||||
document.getElementById('BG_DESC2').innerHTML = "* 256 colors tiles<br />* 16 Extended Palettes";
|
||||
} break;
|
||||
case 2: {
|
||||
sz = document.forms['bgvram'].TS2.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].TS2.options;
|
||||
document.getElementById('BG_DESC2').innerHTML = "* 16 colors tiles<br />* 16 Palettes";
|
||||
} break;
|
||||
case 3: {
|
||||
sz = document.forms['bgvram'].RS2.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].RS2.options;
|
||||
document.getElementById('BG_DESC2').innerHTML = "* 256 colors tiles<br />* Can't flip tiles<br />* Maximum of 256 tiles";
|
||||
} break;
|
||||
case 4: {
|
||||
sz = document.forms['bgvram'].ERS2.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].ERS2.options;
|
||||
document.getElementById('BG_DESC2').innerHTML = "* 256 colors tiles<br />* 16 Extended Palettes";
|
||||
} break;
|
||||
case 5: {
|
||||
sz = document.forms['bgvram'].B8S2.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].B8S2.options;
|
||||
document.getElementById('BG_DESC2').innerHTML = "* 256 colors bitmap<br />Note1: Refer to BgSize_B8_256x256 but<br />only the top 256x192 is used.";
|
||||
} break;
|
||||
case 6: {
|
||||
sz = document.forms['bgvram'].B16S2.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].B16S2.options;
|
||||
document.getElementById('BG_DESC2').innerHTML = "* 32768 colors bitmap (+ 1-Bit Alpha)<br />Note1: Refer to BgSize_B8_256x256 but<br />only the top 256x192 is used.";
|
||||
} break;
|
||||
}
|
||||
if (bgtype2 > 0) {
|
||||
ShareLink += "&S2=" + sz;
|
||||
if (funccallsub) Function_Call += "bgInitSub(2"; else Function_Call += "bgInit(2";
|
||||
Function_Call += ", BgType_" + document.forms['bgvram'].T2.options[document.forms['bgvram'].T2.options.selectedIndex].value;
|
||||
Function_Call += ", BgSize_" + szopt[szopt.selectedIndex].value + ", " + mapbase + ", " + tilebase + ");<br />";
|
||||
}
|
||||
bg_alloc_from(2, bgtype2, sz, maxtiles, mapbase, tilebase);
|
||||
|
||||
// Map BG 3
|
||||
bgtype3 = document.forms['bgvram'].T3.options.selectedIndex;
|
||||
if (bgtype3 == 3) maxtiles = document.forms['bgvram'].RNT3.options[document.forms['bgvram'].RNT3.options.selectedIndex].value;
|
||||
else maxtiles = document.forms['bgvram'].NT3.options[document.forms['bgvram'].NT3.options.selectedIndex].value;
|
||||
mapbase = document.forms['bgvram'].MB3.options.selectedIndex;
|
||||
tilebase = document.forms['bgvram'].TB3.options.selectedIndex;
|
||||
if (bgtype3 > 0) {
|
||||
ShareLink += "&T3=" + bgtype3 + "&NT3=" + maxtiles + "&MB3=" + mapbase + "&TB3=" + tilebase;
|
||||
}
|
||||
switch (bgtype3)
|
||||
{
|
||||
case 0: {
|
||||
sz = 0;
|
||||
document.getElementById('BG_DESC3').innerHTML = "* Background is unused";
|
||||
} break;
|
||||
case 1: {
|
||||
sz = document.forms['bgvram'].TS3.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].TS3.options;
|
||||
document.getElementById('BG_DESC3').innerHTML = "* 256 colors tiles<br />* 16 Extended Palettes";
|
||||
} break;
|
||||
case 2: {
|
||||
sz = document.forms['bgvram'].TS3.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].TS3.options;
|
||||
document.getElementById('BG_DESC3').innerHTML = "* 16 colors tiles<br />* 16 Palettes";
|
||||
} break;
|
||||
case 3: {
|
||||
sz = document.forms['bgvram'].RS3.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].RS3.options;
|
||||
document.getElementById('BG_DESC3').innerHTML = "* 256 colors tiles<br />* Can't flip tiles<br />* Maximum of 256 tiles";
|
||||
} break;
|
||||
case 4: {
|
||||
sz = document.forms['bgvram'].ERS3.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].ERS3.options;
|
||||
document.getElementById('BG_DESC3').innerHTML = "* 256 colors tiles<br />* 16 Extended Palettes";
|
||||
} break;
|
||||
case 5: {
|
||||
sz = document.forms['bgvram'].B8S3.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].B8S3.options;
|
||||
document.getElementById('BG_DESC3').innerHTML = "* 256 colors bitmap<br />Note1: Refer to BgSize_B8_256x256 but<br />only the top 256x192 is used.";
|
||||
} break;
|
||||
case 6: {
|
||||
sz = document.forms['bgvram'].B16S3.options.selectedIndex;
|
||||
szopt = document.forms['bgvram'].B16S3.options;
|
||||
document.getElementById('BG_DESC3').innerHTML = "* 32768 colors bitmap (+ 1-Bit Alpha)<br />Note1: Refer to BgSize_B8_256x256 but<br />only the top 256x192 is used.";
|
||||
} break;
|
||||
}
|
||||
if (bgtype3 > 0) {
|
||||
ShareLink += "&S3=" + sz;
|
||||
if (funccallsub) Function_Call += "bgInitSub(3"; else Function_Call += "bgInit(3";
|
||||
Function_Call += ", BgType_" + document.forms['bgvram'].T3.options[document.forms['bgvram'].T3.options.selectedIndex].value;
|
||||
Function_Call += ", BgSize_" + szopt[szopt.selectedIndex].value + ", " + mapbase + ", " + tilebase + ");<br />";
|
||||
}
|
||||
bg_alloc_from(3, bgtype3, sz, maxtiles, mapbase, tilebase);
|
||||
|
||||
// Check for conflicts
|
||||
bgcstatus = bg_alloc_conflict();
|
||||
|
||||
// Write results
|
||||
if (bgtype0 > 0) {
|
||||
document.getElementById('BG0_Usage').innerHTML = "Background 0: Using <b>" + V2Digits(VRAM_BGSpace[0]) + "KiB</b> for gfx and <b>" + V2Digits(VRAM_BGSpace[1]) + "KiB</b> for map.";
|
||||
} else {
|
||||
document.getElementById('BG0_Usage').innerHTML = "Background 0: Not being used.";
|
||||
}
|
||||
if (bgtype1 > 0) {
|
||||
document.getElementById('BG1_Usage').innerHTML = "Background 1: Using <b>" + V2Digits(VRAM_BGSpace[2]) + "KiB</b> for gfx and <b>" + V2Digits(VRAM_BGSpace[3]) + "KiB</b> for map.";
|
||||
} else {
|
||||
document.getElementById('BG1_Usage').innerHTML = "Background 1: Not being used.";
|
||||
}
|
||||
if (bgtype2 > 0) {
|
||||
document.getElementById('BG2_Usage').innerHTML = "Background 2: Using <b>" + V2Digits(VRAM_BGSpace[4]) + "KiB</b> for gfx and <b>" + V2Digits(VRAM_BGSpace[5]) + "KiB</b> for map.";
|
||||
} else {
|
||||
document.getElementById('BG2_Usage').innerHTML = "Background 2: Not being used.";
|
||||
}
|
||||
if (bgtype3 > 0) {
|
||||
document.getElementById('BG3_Usage').innerHTML = "Background 3: Using <b>" + V2Digits(VRAM_BGSpace[6]) + "KiB</b> for gfx and <b>" + V2Digits(VRAM_BGSpace[7]) + "KiB</b> for map.";
|
||||
} else {
|
||||
document.getElementById('BG3_Usage').innerHTML = "Background 3: Not being used.";
|
||||
}
|
||||
|
||||
switch (bgcstatus)
|
||||
{
|
||||
case 1: document.getElementById('Mapping_Status').innerHTML = "VRAM BG Allocation okay!"; break;
|
||||
case 2: document.getElementById('Mapping_Status').innerHTML = "<i>Warning:</i> VRAM BG Allocation has some warnings, ignore if gfx has shared tileset graphics."; break;
|
||||
case 3: document.getElementById('Mapping_Status').innerHTML = "<b>Error:</b> VRAM BG Allocation has errors."; break;
|
||||
}
|
||||
|
||||
wmode = WorkModes[bgtype3 + bgtype2*8];
|
||||
if (wmode < 0) {
|
||||
document.getElementById('Recommended_Mode').innerHTML = "<b>Error:</b> Invalid background type combination!";
|
||||
document.getElementById('Working_Engines').innerHTML = "<b>Error:</b> Combination won't work on hardware!";
|
||||
} else {
|
||||
document.getElementById('Recommended_Mode').innerHTML = "<b>Mode " + wmode + "</b> will support your options.";
|
||||
if ((DISPCNT_MapBase == 0) && (DISPCNT_TileBase == 0)) {
|
||||
document.getElementById('Working_Engines').innerHTML = "Works for Main Engine or Sub Engine.";
|
||||
} else {
|
||||
document.getElementById('Working_Engines').innerHTML = "Works for Main Engine only!<br />For Sub Engine map, use DISPCNT 64KB steps of 0.";
|
||||
}
|
||||
}
|
||||
|
||||
if ((wmode >= 0) && (bgcstatus != 3) ) {
|
||||
document.getElementById('Report').innerHTML = "All options valid.";
|
||||
document.getElementById('Report').style.color = "#00A000";
|
||||
} else {
|
||||
document.getElementById('Report').innerHTML = "Found errors/conflicts.";
|
||||
document.getElementById('Report').style.color = "#C00000";
|
||||
}
|
||||
}
|
||||
|
||||
function bg_allocation_table()
|
||||
{
|
||||
var tableid, table, tr, td, i, j, k;
|
||||
tableid = document.getElementById('BGAllocationTable');
|
||||
tableid.innerHTML = "";
|
||||
table = document.createElement('TABLE');
|
||||
tr = document.createElement('TR');
|
||||
tr.innerHTML = "<td rowspan=2>Tile Base<br />(16KB)</td><td rowspan=2>Map Base<br />(2KB)</td><td rowspan=2>Address</td><td colspan=2>BG0</td><td colspan=2>BG1</td><td colspan=2>BG2</td><td colspan=3>BG3</td>";
|
||||
table.appendChild(tr);
|
||||
tr = document.createElement('TR');
|
||||
tr.innerHTML = "<td>Gfx</td><td>Map</td><td>Gfx</td><td>Map</td><td>Gfx</td><td>Map</td><td>Gfx</td><td>Map</td>";
|
||||
table.appendChild(tr);
|
||||
for (i=0; i<256; i++) {
|
||||
tr = document.createElement('TR');
|
||||
table.appendChild(tr);
|
||||
|
||||
// Tile Base
|
||||
if ((i % 8) == 0) {
|
||||
j = -(DISPCNT_TileBase * 4) + (i / 8);
|
||||
td = document.createElement('TD');
|
||||
for (k=0; k<8; k++) if (VRAM_BGError[i+k]) td.style.backgroundColor = "#DFAFAF";
|
||||
if ((j >= 0) && (j < 16)) {
|
||||
td.innerHTML = j;
|
||||
} else {
|
||||
td.innerHTML = "N/A";
|
||||
}
|
||||
td.rowSpan = 8;
|
||||
tr.appendChild(td);
|
||||
}
|
||||
|
||||
// Map Base
|
||||
j = -(DISPCNT_MapBase * 32) + i;
|
||||
td = document.createElement('TD');
|
||||
if (VRAM_BGError[i]) td.style.backgroundColor = "#DFAFAF";
|
||||
if ((j >= 0) && (j < 32)) {
|
||||
td.innerHTML = j;
|
||||
} else {
|
||||
td.innerHTML = "N/A";
|
||||
}
|
||||
tr.appendChild(td);
|
||||
|
||||
// Address Base
|
||||
td = document.createElement('TD');
|
||||
if (VRAM_BGError[i]) td.style.backgroundColor = "#DFAFAF";
|
||||
td.innerHTML = "0x0" + (0x06000000 + i * 0x800).toString(16).toUpperCase();
|
||||
tr.appendChild(td);
|
||||
|
||||
// Mark cells
|
||||
for (j=0; j<8; j++) {
|
||||
td = document.createElement('TD');
|
||||
td.style.backgroundColor = ColorCode[VRAM_BGMapping[j][i]];
|
||||
tr.appendChild(td);
|
||||
}
|
||||
}
|
||||
tableid.appendChild(table);
|
||||
}
|
||||
|
||||
function upd()
|
||||
{
|
||||
var i, a, b;
|
||||
|
||||
// Clear globals
|
||||
ShareLink = "";
|
||||
Function_Call = "";
|
||||
CPU_Access = "";
|
||||
|
||||
// Update BG allocation
|
||||
bg_allocation();
|
||||
|
||||
// Generate BG allocation table
|
||||
bg_allocation_table();
|
||||
|
||||
// Update globals
|
||||
ShareLink = "?" + ShareLink.substring(1);
|
||||
document.getElementById('ShareLink').innerHTML = "<a href=" + ShareLink + ">" + ShareLink + "</a>";
|
||||
if (Function_Call.length == 0) {
|
||||
document.getElementById('FunctionCall').innerHTML = "// Empty";
|
||||
} else {
|
||||
document.getElementById('FunctionCall').innerHTML = Function_Call;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user