Registriert seit: 14.08.2005 | AW: BIOS-Call fuer SinusTabelle Ich erlaube mir mal diesen alten Thread auszugraben.
Ich hab hier noch ein zu 3/4 disassembledes GBA-Bios hier rumliegen (selber gedumpt mit dieser Hilfe und niedergeschrieben), womit ich folgende LUT beitragen kann. Code: SinTable:
.hword 0x0000, 0x0192, 0x0323
.hword 0x04B5, 0x0645, 0x07D5
.hword 0x0964, 0x0AF1, 0x0C7C
.hword 0x0E05, 0x0F8C, 0x1111
.hword 0x1294, 0x1413, 0x158F
.hword 0x1708, 0x187D, 0x19EF
.hword 0x1B5D, 0x1CC6, 0x1E2B
.hword 0x1F8B, 0x20E7, 0x223D
.hword 0x238E, 0x24DA, 0x261F
.hword 0x275F, 0x2899, 0x29CD
.hword 0x2AFA, 0x2C21, 0x2D41
.hword 0x2E5A, 0x2F6B, 0x3076
.hword 0x3179, 0x3274, 0x3367
.hword 0x3453, 0x3536, 0x3612
.hword 0x36E5, 0x37AF, 0x3871
.hword 0x392A, 0x39DA, 0x3A82
.hword 0x3B20, 0x3BB6, 0x3C42
.hword 0x3CC5, 0x3D3E, 0x3DAE
.hword 0x3E14, 0x3E71, 0x3EC5
.hword 0x3F0E, 0x3F4E, 0x3F84
.hword 0x3FB1, 0x3FD3, 0x3FEC
.hword 0x3FFB, 0x4000, 0x3FFB
.hword 0x3FEC, 0x3FD3, 0x3FB1
.hword 0x3F84, 0x3F4E, 0x3F0E
.hword 0x3EC5, 0x3E71, 0x3E14
.hword 0x3DAE, 0x3D3E, 0x3CC5
.hword 0x3C42, 0x3BB6, 0x3B20
.hword 0x3A82, 0x39DA, 0x392A
.hword 0x3871, 0x37AF, 0x36E5
.hword 0x3612, 0x3536, 0x3453
.hword 0x3367, 0x3274, 0x3179
.hword 0x3076, 0x2F6B, 0x2E5A
.hword 0x2D41, 0x2C21, 0x2AFA
.hword 0x29CD, 0x2899, 0x275F
.hword 0x261F, 0x24DA, 0x238E
.hword 0x223D, 0x20E7, 0x1F8B
.hword 0x1E2B, 0x1CC6, 0x1B5D
.hword 0x19EF, 0x187D, 0x1708
.hword 0x158F, 0x1413, 0x1294
.hword 0x1111, 0x0F8C, 0x0E05
.hword 0x0C7C, 0x0AF1, 0x0964
.hword 0x07D5, 0x0645, 0x04B5
.hword 0x0323, 0x0192, 0x0000
.hword 0xFE6E, 0xFCDD, 0xFB4B
.hword 0xF9BB, 0xF82B, 0xF69C
.hword 0xF50F, 0xF384, 0xF1FB
.hword 0xF074, 0xEEEF, 0xED6C
.hword 0xEBED, 0xEA71, 0xE8F8
.hword 0xE783, 0xE611, 0xE4A3
.hword 0xE33A, 0xE1D5, 0xE075
.hword 0xDF19, 0xDDC3, 0xDC72
.hword 0xDB26, 0xD9E1, 0xD8A1
.hword 0xD767, 0xD633, 0xD506
.hword 0xD3DF, 0xD2BF, 0xD1A6
.hword 0xD095, 0xCF8A, 0xCE87
.hword 0xCD8C, 0xCC99, 0xCBAD
.hword 0xCACA, 0xC9EE, 0xC91B
.hword 0xC851, 0xC78F, 0xC6D6
.hword 0xC626, 0xC57E, 0xC4E0
.hword 0xC44A, 0xC3BE, 0xC33B
.hword 0xC2C2, 0xC252, 0xC1EC
.hword 0xC18F, 0xC13B, 0xC0F2
.hword 0xC0B2, 0xC07C, 0xC04F
.hword 0xC02D, 0xC014, 0xC005
.hword 0xC000, 0xC005, 0xC014
.hword 0xC02D, 0xC04F, 0xC07C
.hword 0xC0B2, 0xC0F2, 0xC13B
.hword 0xC18F, 0xC1EC, 0xC252
.hword 0xC2C2, 0xC33B, 0xC3BE
.hword 0xC44A, 0xC4E0, 0xC57E
.hword 0xC626, 0xC6D6, 0xC78F
.hword 0xC851, 0xC91B, 0xC9EE
.hword 0xCACA, 0xCBAD, 0xCC99
.hword 0xCD8C, 0xCE87, 0xCF8A
.hword 0xD095, 0xD1A6, 0xD2BF
.hword 0xD3DF, 0xD506, 0xD633
.hword 0xD767, 0xD8A1, 0xD9E1
.hword 0xDB26, 0xDC72, 0xDDC3
.hword 0xDF19, 0xE075, 0xE1D5
.hword 0xE33A, 0xE4A3, 0xE611
.hword 0xE783, 0xE8F8, 0xEA71
.hword 0xEBED, 0xED6C, 0xEEEF
.hword 0xF074, 0xF1FB, 0xF384
.hword 0xF50F, 0xF69C, 0xF82B
.hword 0xF9BB, 0xFB4B, 0xFCDD
.hword 0xFE6E Man kann also rauslesen das 0x4000 = 1.0 ist, also 14 Bit (fractation) für die Nachkommastellen. Und es sind 256 Einträge. Was dann auch der Grund für die Ungenauigkeit sein dürfte, die Goldmomo meinte.
Die Tabelle wird bei den Biosfunktionen "BgAffineSet" und "ObjAffineSet" verwendet. Wenn man mit Hilfe des Codes dieser Funktionen das erhaltene Resultat zurückrechnet kommt man auf die verwendenten Sinus-Werte, aber da ist die Verwendung einer eigenen LUT wohl einfacher.
Geändert von Jim (05.08.2010 um 07:03 Uhr)
|