mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-13 08:34:32 +02:00
#368 GBA use fixed address for lightmap and div tables
This commit is contained in:
@@ -45,7 +45,7 @@ int32 rand_draw()
|
|||||||
return X_RAND(rand_seed_draw);
|
return X_RAND(rand_seed_draw);
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint16 divTable[DIV_TABLE_SIZE] = { // ROM, not a big difference with IWRAM
|
EWRAM_DATA uint16 divTable[DIV_TABLE_SIZE] = { // must be at EWRAM start
|
||||||
0xFFFF, 0xFFFF, 0x8000, 0x5555, 0x4000, 0x3333, 0x2AAA, 0x2492,
|
0xFFFF, 0xFFFF, 0x8000, 0x5555, 0x4000, 0x3333, 0x2AAA, 0x2492,
|
||||||
0x2000, 0x1C71, 0x1999, 0x1745, 0x1555, 0x13B1, 0x1249, 0x1111,
|
0x2000, 0x1C71, 0x1999, 0x1745, 0x1555, 0x13B1, 0x1249, 0x1111,
|
||||||
0x1000, 0x0F0F, 0x0E38, 0x0D79, 0x0CCC, 0x0C30, 0x0BA2, 0x0B21,
|
0x1000, 0x0F0F, 0x0E38, 0x0D79, 0x0CCC, 0x0C30, 0x0BA2, 0x0B21,
|
||||||
|
@@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
//#define PROFILING
|
//#define PROFILING
|
||||||
#ifdef PROFILING
|
#ifdef PROFILING
|
||||||
// #define STATIC_ITEMS
|
#define STATIC_ITEMS
|
||||||
// #define PROFILE_FRAMETIME
|
// #define PROFILE_FRAMETIME
|
||||||
#define PROFILE_SOUNDTIME
|
// #define PROFILE_SOUNDTIME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define IWRAM_MATRIX_LERP
|
#define IWRAM_MATRIX_LERP
|
||||||
@@ -1646,7 +1646,7 @@ struct IMA_STATE {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern const uint16 divTable[DIV_TABLE_SIZE];
|
extern uint16 divTable[DIV_TABLE_SIZE];
|
||||||
|
|
||||||
// renderer internal
|
// renderer internal
|
||||||
extern uint32 keys;
|
extern uint32 keys;
|
||||||
|
@@ -511,6 +511,9 @@ int main(void) {
|
|||||||
} while (msg.message != WM_QUIT);
|
} while (msg.message != WM_QUIT);
|
||||||
|
|
||||||
#elif defined(__GBA__)
|
#elif defined(__GBA__)
|
||||||
|
if (intptr_t(divTable) != MEM_EWRAM) return 0;
|
||||||
|
if (intptr_t(lightmap) != MEM_IWRAM) return 0;
|
||||||
|
|
||||||
irq_init(NULL);
|
irq_init(NULL);
|
||||||
irq_add(II_VBLANK, vblank);
|
irq_add(II_VBLANK, vblank);
|
||||||
irq_enable(II_VBLANK);
|
irq_enable(II_VBLANK);
|
||||||
|
@@ -81,7 +81,7 @@ rasterizeFTA_mode4_asm:
|
|||||||
stmfd sp!, {r4,r5,r6,r7,r8,r9,r10,r11,lr}
|
stmfd sp!, {r4,r5,r6,r7,r8,r9,r10,r11,lr}
|
||||||
sub sp, #16 // reserve stack space for [Ldx, Ldt, Rdx, Rdt]
|
sub sp, #16 // reserve stack space for [Ldx, Ldt, Rdx, Rdt]
|
||||||
|
|
||||||
ldr LMAP, =lightmap
|
mov LMAP, #LMAP_ADDR
|
||||||
ldrb tmp, [L, #VERTEX_G]
|
ldrb tmp, [L, #VERTEX_G]
|
||||||
add LMAP, tmp, lsl #8 // tmp = (L->v.g << 8)
|
add LMAP, tmp, lsl #8 // tmp = (L->v.g << 8)
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ rasterizeFTA_mode4_asm:
|
|||||||
ble .skip_left_dx
|
ble .skip_left_dx
|
||||||
|
|
||||||
lsl tmp, Lh, #1
|
lsl tmp, Lh, #1
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Lh)
|
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Lh)
|
||||||
|
|
||||||
ldrsh Ldx, [L, #VERTEX_X]
|
ldrsh Ldx, [L, #VERTEX_X]
|
||||||
@@ -148,7 +148,7 @@ rasterizeFTA_mode4_asm:
|
|||||||
ble .skip_right_dx
|
ble .skip_right_dx
|
||||||
|
|
||||||
lsl tmp, Rh, #1
|
lsl tmp, Rh, #1
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Rh)
|
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Rh)
|
||||||
|
|
||||||
ldrsh Rdx, [R, #VERTEX_X]
|
ldrsh Rdx, [R, #VERTEX_X]
|
||||||
@@ -188,7 +188,7 @@ rasterizeFTA_mode4_asm:
|
|||||||
|
|
||||||
add tmp, pixel, tmp // tmp = pixel + x1
|
add tmp, pixel, tmp // tmp = pixel + x1
|
||||||
|
|
||||||
ldr DIVLUTi, =divTable
|
mov DIVLUTi, #DIVLUT_ADDR
|
||||||
lsl inv, width, #1
|
lsl inv, width, #1
|
||||||
ldrh inv, [DIVLUTi, inv] // inv = FixedInvU(width)
|
ldrh inv, [DIVLUTi, inv] // inv = FixedInvU(width)
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ rasterizeFTA_mode4_asm:
|
|||||||
|
|
||||||
.align_block_8px:
|
.align_block_8px:
|
||||||
tst width, #4
|
tst width, #4
|
||||||
beq .scanlin_block_8px
|
beq .scanline_block_8px
|
||||||
|
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
@@ -263,14 +263,14 @@ rasterizeFTA_mode4_asm:
|
|||||||
subs width, #4
|
subs width, #4
|
||||||
beq .scanline_end
|
beq .scanline_end
|
||||||
|
|
||||||
.scanlin_block_8px:
|
.scanline_block_8px:
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
|
|
||||||
subs width, #8
|
subs width, #8
|
||||||
bne .scanlin_block_8px
|
bne .scanline_block_8px
|
||||||
|
|
||||||
.scanline_end:
|
.scanline_end:
|
||||||
ldr tmp, [sp, #(SP_LDX + 16)]
|
ldr tmp, [sp, #(SP_LDX + 16)]
|
||||||
|
@@ -84,7 +84,7 @@ rasterizeFT_mode4_asm:
|
|||||||
stmfd sp!, {r4,r5,r6,r7,r8,r9,r10,r11,lr}
|
stmfd sp!, {r4,r5,r6,r7,r8,r9,r10,r11,lr}
|
||||||
sub sp, #16 // reserve stack space for [Ldx, Ldt, Rdx, Rdt]
|
sub sp, #16 // reserve stack space for [Ldx, Ldt, Rdx, Rdt]
|
||||||
|
|
||||||
ldr LMAP, =lightmap
|
mov LMAP, #LMAP_ADDR
|
||||||
ldrb tmp, [L, #VERTEX_G]
|
ldrb tmp, [L, #VERTEX_G]
|
||||||
add LMAP, tmp, lsl #8 // tmp = (L->v.g << 8)
|
add LMAP, tmp, lsl #8 // tmp = (L->v.g << 8)
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ rasterizeFT_mode4_asm:
|
|||||||
ble .skip_left_dx
|
ble .skip_left_dx
|
||||||
|
|
||||||
lsl tmp, Lh, #1
|
lsl tmp, Lh, #1
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Lh)
|
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Lh)
|
||||||
|
|
||||||
ldrsh Ldx, [L, #VERTEX_X]
|
ldrsh Ldx, [L, #VERTEX_X]
|
||||||
@@ -151,7 +151,7 @@ rasterizeFT_mode4_asm:
|
|||||||
ble .skip_right_dx
|
ble .skip_right_dx
|
||||||
|
|
||||||
lsl tmp, Rh, #1
|
lsl tmp, Rh, #1
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Rh)
|
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Rh)
|
||||||
|
|
||||||
ldrsh Rdx, [R, #VERTEX_X]
|
ldrsh Rdx, [R, #VERTEX_X]
|
||||||
@@ -191,7 +191,7 @@ rasterizeFT_mode4_asm:
|
|||||||
|
|
||||||
add tmp, pixel, tmp // tmp = pixel + x1
|
add tmp, pixel, tmp // tmp = pixel + x1
|
||||||
|
|
||||||
ldr DIVLUTi, =divTable
|
mov DIVLUTi, #DIVLUT_ADDR
|
||||||
lsl inv, width, #1
|
lsl inv, width, #1
|
||||||
ldrh inv, [DIVLUTi, inv] // inv = FixedInvU(width)
|
ldrh inv, [DIVLUTi, inv] // inv = FixedInvU(width)
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ rasterizeFT_mode4_asm:
|
|||||||
|
|
||||||
.align_block_8px:
|
.align_block_8px:
|
||||||
tst width, #4
|
tst width, #4
|
||||||
beq .scanlin_block_8px
|
beq .scanline_block_8px
|
||||||
|
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
@@ -263,14 +263,14 @@ rasterizeFT_mode4_asm:
|
|||||||
subs width, #4
|
subs width, #4
|
||||||
beq .scanline_end
|
beq .scanline_end
|
||||||
|
|
||||||
.scanlin_block_8px:
|
.scanline_block_8px:
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
|
|
||||||
subs width, #8
|
subs width, #8
|
||||||
bne .scanlin_block_8px
|
bne .scanline_block_8px
|
||||||
|
|
||||||
.scanline_end:
|
.scanline_end:
|
||||||
ldr tmp, [sp, #(SP_LDX + 16)]
|
ldr tmp, [sp, #(SP_LDX + 16)]
|
||||||
|
@@ -27,7 +27,7 @@ blocks .req DIVLUT
|
|||||||
rasterizeF_mode4_asm:
|
rasterizeF_mode4_asm:
|
||||||
stmfd sp!, {r4,r5,r6,r7,r8,r9,r10,r11,lr}
|
stmfd sp!, {r4,r5,r6,r7,r8,r9,r10,r11,lr}
|
||||||
|
|
||||||
ldr LMAP, =lightmap
|
mov LMAP, #LMAP_ADDR
|
||||||
|
|
||||||
ldrb tmp, [L, #VERTEX_G]
|
ldrb tmp, [L, #VERTEX_G]
|
||||||
orr tmp, index, tmp, lsl #8 // tmp = index | (L->v.g << 8)
|
orr tmp, index, tmp, lsl #8 // tmp = index | (L->v.g << 8)
|
||||||
@@ -38,7 +38,7 @@ rasterizeF_mode4_asm:
|
|||||||
mov Rh, #0 // Rh = 0
|
mov Rh, #0 // Rh = 0
|
||||||
|
|
||||||
.loop:
|
.loop:
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
|
|
||||||
.calc_left_start:
|
.calc_left_start:
|
||||||
cmp Lh, #0
|
cmp Lh, #0
|
||||||
|
@@ -128,7 +128,7 @@ rasterizeGTA_mode4_asm:
|
|||||||
ble .skip_left_dx
|
ble .skip_left_dx
|
||||||
|
|
||||||
lsl tmp, Lh, #1
|
lsl tmp, Lh, #1
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Lh)
|
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Lh)
|
||||||
|
|
||||||
ldrsh Ldx, [L, #VERTEX_X]
|
ldrsh Ldx, [L, #VERTEX_X]
|
||||||
@@ -156,9 +156,8 @@ rasterizeGTA_mode4_asm:
|
|||||||
|
|
||||||
.skip_left_dx:
|
.skip_left_dx:
|
||||||
lsl Lx, #16 // Lx <<= 16
|
lsl Lx, #16 // Lx <<= 16
|
||||||
|
lsl Lg, #8 // Lg <= 8
|
||||||
ldr LMAP, =lightmap // !!! lightmap should be 64k aligned
|
add Lg, #LMAP_ADDR // Lg += lightmap
|
||||||
add Lg, LMAP, Lg, lsl #8 // Lg is address in lightmap array
|
|
||||||
|
|
||||||
b .calc_left_start
|
b .calc_left_start
|
||||||
.calc_left_end:
|
.calc_left_end:
|
||||||
@@ -179,7 +178,7 @@ rasterizeGTA_mode4_asm:
|
|||||||
ble .skip_right_dx
|
ble .skip_right_dx
|
||||||
|
|
||||||
lsl tmp, Rh, #1
|
lsl tmp, Rh, #1
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Rh)
|
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Rh)
|
||||||
|
|
||||||
ldrsh Rdx, [R, #VERTEX_X]
|
ldrsh Rdx, [R, #VERTEX_X]
|
||||||
@@ -207,9 +206,8 @@ rasterizeGTA_mode4_asm:
|
|||||||
|
|
||||||
.skip_right_dx:
|
.skip_right_dx:
|
||||||
lsl Rx, #16 // Rx <<= 16
|
lsl Rx, #16 // Rx <<= 16
|
||||||
|
lsl Rg, #8 // Rg <= 8
|
||||||
ldr LMAP, =lightmap // !!! lightmap should be 64k aligned
|
add Rg, #LMAP_ADDR // Rg += lightmap
|
||||||
add Rg, LMAP, Rg, lsl #8 // Rg is address in lightmap array
|
|
||||||
|
|
||||||
b .calc_right_start
|
b .calc_right_start
|
||||||
.calc_right_end:
|
.calc_right_end:
|
||||||
@@ -234,7 +232,7 @@ rasterizeGTA_mode4_asm:
|
|||||||
|
|
||||||
add ptr, pixel, tmp // ptr = pixel + x1
|
add ptr, pixel, tmp // ptr = pixel + x1
|
||||||
|
|
||||||
ldr DIVLUTi, =divTable
|
mov DIVLUTi, #DIVLUT_ADDR
|
||||||
lsl inv, width, #1
|
lsl inv, width, #1
|
||||||
ldrh inv, [DIVLUTi, inv] // inv = FixedInvU(width)
|
ldrh inv, [DIVLUTi, inv] // inv = FixedInvU(width)
|
||||||
|
|
||||||
@@ -321,7 +319,7 @@ rasterizeGTA_mode4_asm:
|
|||||||
|
|
||||||
.align_block_8px:
|
.align_block_8px:
|
||||||
tst width, #4
|
tst width, #4
|
||||||
beq .scanlin_block_8px
|
beq .scanline_block_8px
|
||||||
|
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
@@ -329,14 +327,14 @@ rasterizeGTA_mode4_asm:
|
|||||||
subs width, #4
|
subs width, #4
|
||||||
beq .scanline_end
|
beq .scanline_end
|
||||||
|
|
||||||
.scanlin_block_8px:
|
.scanline_block_8px:
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
|
|
||||||
subs width, #8
|
subs width, #8
|
||||||
bne .scanlin_block_8px
|
bne .scanline_block_8px
|
||||||
|
|
||||||
.scanline_end:
|
.scanline_end:
|
||||||
ldmfd sp!, {Lx,Rx,Lg,Rg,Lt,Rt} // sp+24
|
ldmfd sp!, {Lx,Rx,Lg,Rg,Lt,Rt} // sp+24
|
||||||
|
@@ -131,7 +131,7 @@ rasterizeGT_mode4_asm:
|
|||||||
ble .skip_left_dx
|
ble .skip_left_dx
|
||||||
|
|
||||||
lsl tmp, Lh, #1
|
lsl tmp, Lh, #1
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Lh)
|
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Lh)
|
||||||
|
|
||||||
ldrsh Ldx, [L, #VERTEX_X]
|
ldrsh Ldx, [L, #VERTEX_X]
|
||||||
@@ -159,9 +159,8 @@ rasterizeGT_mode4_asm:
|
|||||||
|
|
||||||
.skip_left_dx:
|
.skip_left_dx:
|
||||||
lsl Lx, #16 // Lx <<= 16
|
lsl Lx, #16 // Lx <<= 16
|
||||||
|
lsl Lg, #8 // Lg <= 8
|
||||||
ldr LMAP, =lightmap // !!! lightmap should be 64k aligned
|
add Lg, #LMAP_ADDR // Lg += lightmap
|
||||||
add Lg, LMAP, Lg, lsl #8 // Lg is address in lightmap array
|
|
||||||
|
|
||||||
b .calc_left_start
|
b .calc_left_start
|
||||||
.calc_left_end:
|
.calc_left_end:
|
||||||
@@ -182,7 +181,7 @@ rasterizeGT_mode4_asm:
|
|||||||
ble .skip_right_dx
|
ble .skip_right_dx
|
||||||
|
|
||||||
lsl tmp, Rh, #1
|
lsl tmp, Rh, #1
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Rh)
|
ldrh tmp, [DIVLUT, tmp] // tmp = FixedInvU(Rh)
|
||||||
|
|
||||||
ldrsh Rdx, [R, #VERTEX_X]
|
ldrsh Rdx, [R, #VERTEX_X]
|
||||||
@@ -210,9 +209,8 @@ rasterizeGT_mode4_asm:
|
|||||||
|
|
||||||
.skip_right_dx:
|
.skip_right_dx:
|
||||||
lsl Rx, #16 // Rx <<= 16
|
lsl Rx, #16 // Rx <<= 16
|
||||||
|
lsl Rg, #8 // Rg <= 8
|
||||||
ldr LMAP, =lightmap // !!! lightmap should be 64k aligned
|
add Rg, #LMAP_ADDR // Rg += lightmap
|
||||||
add Rg, LMAP, Rg, lsl #8 // Rg is address in lightmap array
|
|
||||||
|
|
||||||
b .calc_right_start
|
b .calc_right_start
|
||||||
.calc_right_end:
|
.calc_right_end:
|
||||||
@@ -237,7 +235,7 @@ rasterizeGT_mode4_asm:
|
|||||||
|
|
||||||
add ptr, pixel, tmp // ptr = pixel + x1
|
add ptr, pixel, tmp // ptr = pixel + x1
|
||||||
|
|
||||||
ldr DIVLUTi, =divTable
|
mov DIVLUTi, #DIVLUT_ADDR
|
||||||
lsl inv, width, #1
|
lsl inv, width, #1
|
||||||
ldrh inv, [DIVLUTi, inv] // inv = FixedInvU(width)
|
ldrh inv, [DIVLUTi, inv] // inv = FixedInvU(width)
|
||||||
|
|
||||||
@@ -312,7 +310,7 @@ rasterizeGT_mode4_asm:
|
|||||||
|
|
||||||
.align_block_8px:
|
.align_block_8px:
|
||||||
tst width, #4
|
tst width, #4
|
||||||
beq .scanlin_block_8px
|
beq .scanline_block_8px
|
||||||
|
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
@@ -320,14 +318,14 @@ rasterizeGT_mode4_asm:
|
|||||||
subs width, #4
|
subs width, #4
|
||||||
beq .scanline_end
|
beq .scanline_end
|
||||||
|
|
||||||
.scanlin_block_8px:
|
.scanline_block_8px:
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
PUT_PIXELS
|
PUT_PIXELS
|
||||||
|
|
||||||
subs width, #8
|
subs width, #8
|
||||||
bne .scanlin_block_8px
|
bne .scanline_block_8px
|
||||||
|
|
||||||
.scanline_end:
|
.scanline_end:
|
||||||
ldmfd sp!, {Lx,Rx,Lg,Rg,Lt,Rt} // sp+24
|
ldmfd sp!, {Lx,Rx,Lg,Rg,Lt,Rt} // sp+24
|
||||||
|
@@ -47,9 +47,9 @@ rasterizeG_mode4_asm:
|
|||||||
stmfd sp!, {r4,r5,r6,r7,r8,r9,r10,r11,lr}
|
stmfd sp!, {r4,r5,r6,r7,r8,r9,r10,r11,lr}
|
||||||
sub sp, #16 // reserve stack space for [Ldx, Ldg, Rdx, Rdg]
|
sub sp, #16 // reserve stack space for [Ldx, Ldg, Rdx, Rdg]
|
||||||
|
|
||||||
ldr tmp, =lightmap
|
mov tmp, #LMAP_ADDR
|
||||||
add LMAP, index, tmp // LMAP = lightmap + index
|
add LMAP, index, tmp // LMAP = lightmap + index
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
|
|
||||||
mov Lh, #0 // Lh = 0
|
mov Lh, #0 // Lh = 0
|
||||||
mov Rh, #0 // Rh = 0
|
mov Rh, #0 // Rh = 0
|
||||||
|
@@ -36,7 +36,7 @@ rasterizeS_mode4_asm:
|
|||||||
mov Rh, #0 // Rh = 0
|
mov Rh, #0 // Rh = 0
|
||||||
|
|
||||||
.loop:
|
.loop:
|
||||||
ldr DIVLUT, =divTable
|
mov DIVLUT, #DIVLUT_ADDR
|
||||||
|
|
||||||
.calc_left_start:
|
.calc_left_start:
|
||||||
cmp Lh, #0
|
cmp Lh, #0
|
||||||
|
@@ -9,11 +9,16 @@
|
|||||||
.equ VERTEX_T, 8
|
.equ VERTEX_T, 8
|
||||||
.equ VERTEX_PREV, 12
|
.equ VERTEX_PREV, 12
|
||||||
.equ VERTEX_NEXT, 16
|
.equ VERTEX_NEXT, 16
|
||||||
|
.equ EWRAM_START, 0x2000000
|
||||||
|
.equ IWRAM_START, 0x3000000
|
||||||
|
|
||||||
|
.equ DIVLUT_ADDR, EWRAM_START
|
||||||
|
.equ LMAP_ADDR, IWRAM_START
|
||||||
|
|
||||||
#ifdef __TNS__
|
#ifdef __TNS__
|
||||||
.equ VRAM_STRIDE, 320
|
.equ VRAM_STRIDE, 320
|
||||||
#else
|
#else
|
||||||
.equ VRAM_STRIDE, 240
|
.equ VRAM_STRIDE, 240
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TEX_2PX
|
#define TEX_2PX
|
||||||
|
Reference in New Issue
Block a user