We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
LDB (Super FX): Difference between revisions
From SnesLab
(see also LDW) |
(→See Also: STB) |
||
(22 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{| class="wikitable" style="float:right;clear:right;width: | {| class="wikitable" style="float:right;clear:right;width:50%" | ||
!colspan="8"|Basic Info | !colspan="8"|Basic Info | ||
|+ | |+ | ||
|'''Addressing Mode''' | |||
|'''Opcode''' | |'''Opcode''' | ||
|'''Length''' | |'''Length''' | ||
Line 8: | Line 9: | ||
|'''Cache Speed''' | |'''Cache Speed''' | ||
|+ | |+ | ||
|[[Implied Indirect]] | |||
|3D4m | |3D4m | ||
|2 byte | |2 byte | ||
Line 16: | Line 18: | ||
{| class="wikitable" style="float:right;clear:right;width:30%" | {| class="wikitable" style="float:right;clear:right;width:30%" | ||
!colspan="9"|Flags | !colspan="9"|Flags Affected | ||
|+ | |+ | ||
|B | |[[B Flag|B]] | ||
|ALT1 | |[[ALT1]] | ||
|ALT2 | |[[ALT2]] | ||
|O/V | |[[O/V]] | ||
|S | |[[Sign Flag|S]] | ||
|CY | |[[CY]] | ||
|Z | |[[Zero Flag|Z]] | ||
|+ | |+ | ||
|0 | |0 | ||
Line 35: | Line 37: | ||
|} | |} | ||
'''LDB''' is a [[Super FX]] instruction that loads one byte from the [[Game Pak]]. | '''LDB''' (Load Byte) is a [[Super FX]] instruction that loads one byte from the [[Game Pak]] and stores it in the low byte of the [[destination register]]. The high byte of the destination register is zeroed. | ||
Part of the reason why LDB takes so many cycles is that the GSU waits for data to be loaded from game pak ram. | |||
The [[ALT0]] state is restored. | |||
The destination register should be specified in advance using [[WITH]] or [[TO]]. Otherwise, R<sub>0</sub> serves as the default. | |||
==== Syntax ==== | |||
<pre> | |||
LDB (Rm) | |||
</pre> | |||
where m can be from 0~11 | |||
==== Example ==== | |||
Let: | |||
D<sub>reg</sub> : R<sub>7</sub> | |||
R<sub>1</sub> = 3482h | |||
RAMBR : 70h | |||
(70:3482h) = 51h | |||
After LDB (R<sub>1</sub>) is executed: | |||
R<sub>7</sub> = 0051h | |||
=== See Also === | === See Also === | ||
* [[LDW]] | * [[LDW]] | ||
* [[STB]] | |||
* [[RAMB]] | |||
* [[ALT1]] | |||
=== External Links === | === External Links === | ||
* Official Nintendo | * Official Super Nintendo development manual on LDB: 9.45 on [https://archive.org/details/SNESDevManual/book2/page/n220 Page 2-9-64 of Book II] | ||
* example: [https://archive.org/details/SNESDevManual/book2/page/n221 Page 2-9-65], lbid. | |||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:Super FX]] | [[Category:Super FX]] | ||
[[Category:Data Transfer Instructions]] | [[Category:Data Transfer Instructions]] | ||
[[Category:Expects Sreg/Dreg Prearranged]] |
Latest revision as of 05:20, 16 July 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | ROM Speed | RAM Speed | Cache Speed | ||
Implied Indirect | 3D4m | 2 byte | 11 cycles | 13 cycles | 6 cycle |
Flags Affected | ||||||||
---|---|---|---|---|---|---|---|---|
B | ALT1 | ALT2 | O/V | S | CY | Z | ||
0 | 0 | 0 | . | . | . | . |
LDB (Load Byte) is a Super FX instruction that loads one byte from the Game Pak and stores it in the low byte of the destination register. The high byte of the destination register is zeroed.
Part of the reason why LDB takes so many cycles is that the GSU waits for data to be loaded from game pak ram.
The ALT0 state is restored.
The destination register should be specified in advance using WITH or TO. Otherwise, R0 serves as the default.
Syntax
LDB (Rm)
where m can be from 0~11
Example
Let:
Dreg : R7 R1 = 3482h RAMBR : 70h (70:3482h) = 51h
After LDB (R1) is executed:
R7 = 0051h
See Also
External Links
- Official Super Nintendo development manual on LDB: 9.45 on Page 2-9-64 of Book II
- example: Page 2-9-65, lbid.