|
|
| version 1.2, 2003/12/04 18:42:01 | version 1.7, 2004/02/18 21:58:42 |
|---|---|
| Line 61 G_MASTER equ (GD_SIZE * -1) | Line 61 G_MASTER equ (GD_SIZE * -1) |
| G_SLAVE equ 0 | G_SLAVE equ 0 |
| G_MODE1 equ (GD_SIZE + &00) | G_MODE1 equ (GD_SIZE + &00) |
| ; G_mode2 equ (GD_SIZE + &01) | ; G_mode2 equ (GD_SIZE + &01) |
| ; G_vsync equ (GD_SIZE + &02) | G_CLOCK equ (GD_SIZE + &02) |
| ; G_vsyncint equ (GD_SIZE + &03) | ; G_crt15khz equ (GD_SIZE + &03) |
| ; G_analog equ (GD_SIZE + &04) | ; G_m_drawing equ (GD_SIZE + &04) |
| ; G_palnum equ (GD_SIZE + &08) | ; G_s_drawing equ (GD_SIZE + &05) |
| ; G_degpal equ (GD_SIZE + &0c) | ; G_vsync equ (GD_SIZE + &06) |
| ; G_anapal equ (GD_SIZE + &10) | ; G_vsyncint equ (GD_SIZE + &07) |
| G_CLOCK equ (GD_SIZE + &50) | ; G_display equ (GD_SIZE + &08) |
| ; G_display equ (GD_SIZE + &51) | ; G_bitac equ (GD_SIZE + &09) |
| ; G_bitac equ (GD_SIZE + &52) | ; G_analog equ (GD_SIZE + &0c) |
| ; G_m_drawing equ (GD_SIZE + &53) | ; G_palnum equ (GD_SIZE + &10) |
| ; G_s_drawing equ (GD_SIZE + &54) | ; G_degpal equ (GD_SIZE + &14) |
| ; G_anapal equ (GD_SIZE + &18) | |
| INCLUDE ..\..\i286a\i286a.inc | |
| IMPORT np2cfg | IMPORT np2cfg |
| IMPORT mem | IMPORT i286acore |
| IMPORT np2_vram | IMPORT np2_vram |
| IMPORT dsync | IMPORT dsync |
| IMPORT vramupdate | IMPORT vramupdate |
| Line 83 G_CLOCK equ (GD_SIZE + &50) | Line 86 G_CLOCK equ (GD_SIZE + &50) |
| IMPORT gdc | IMPORT gdc |
| EXPORT grph_table0 | EXPORT grph_table0 |
| EXPORT makegrph_init | EXPORT makegrph_initialize |
| EXPORT makegrph | EXPORT makegrph |
| AREA MAKEGRPHBSS, DATA, READONLY | AREA .rdata, DATA, READONLY |
| grph_table0 dcd &00000000 | grph_table0 dcd &00000000 |
| dcd &01000000 | dcd &01000000 |
| Line 106 grph_table0 dcd &00000000 | Line 109 grph_table0 dcd &00000000 |
| dcd &01010101 | dcd &01010101 |
| AREA MAKEGRPH, CODE, READONLY | AREA .text, CODE, READONLY |
| makegrph_init mov pc, lr | makegrph_initialize |
| mov pc, lr | |
| ; r8 = mem | ; r8 = mem |
| Line 116 makegrph_init mov pc, lr | Line 120 makegrph_init mov pc, lr |
| ; r10 = out | ; r10 = out |
| ; r11 = grph_table0 | ; r11 = grph_table0 |
| ; tmp r2, r3, r4, r5, r12 | ; tmp r2, r3, r4, r5, r12 |
| MACRO | |
| $label PIXADD $shift | |
| $label and r12, r3, #&0f | |
| and r3, r3, #&f0 | |
| ldr r3, [r11, r3, lsr #2] | |
| ldr r12, [r11, r12, lsl #2] | |
| orr r4, r4, r3, lsl #$shift | |
| orr r5, r5, r12, lsl #$shift | |
| MEND | |
| MACRO | MACRO |
| $label GRPHDATASET | $label GRPHDATASET |
| $label add r2, r8, r9, lsr #17 | $label add r3, r8, #(VRAM_R - VRAM_B) |
| ldrb r3, [r2] | ldrb r2, [r8, r9 lsr #17] |
| add r2, r2, #(VRAM_R - VRAM_B) | ldrb r3, [r3, r9 lsr #17] |
| and r12, r3, #&0f | add r8, r8, #(VRAM_G - VRAM_B) |
| and r3, r3, #&f0 | and r12, r2, #&f0 |
| ldr r4, [r11, r3, lsr #2] | and r2, r2, #&0f |
| ldr r5, [r11, r12, lsl #2] | ldr r4, [r11, r12, lsr #2] ; 0 |
| ldrb r3, [r2] | ldr r5, [r11, r2, lsl #2] ; 0 |
| add r2, r2, #(VRAM_G - VRAM_R) | and r12, r3, #&f0 ; 1 |
| PIXADD 1 | and r3, r3, #&0f ; 1 |
| ldrb r3, [r2] | ldr r12, [r11, r12, lsr #2] ; 1 |
| add r2, r2, #(VRAM_E - VRAM_G) | ldr r3, [r11, r3, lsl #2] ; 1 |
| PIXADD 2 | ldrb r2, [r8, r9 lsr #17] |
| ldrb r3, [r2] | orr r4, r4, r12, lsl #1 ; 1 |
| PIXADD 3 | orr r5, r5, r3, lsl #1 ; 1 |
| str r4, [r10] | add r8, r8, #(VRAM_E - VRAM_G) |
| str r5, [r10, #4] | and r12, r2, #&f0 ; 2 |
| and r2, r2, #&0f ; 2 | |
| ldr r12, [r11, r12, lsr #2] ; 2 | |
| ldrb r3, [r8, r9 lsr #17] | |
| ldr r2, [r11, r2, lsl #2] ; 2 | |
| orr r4, r4, r12, lsl #2 ; 2 | |
| and r12, r3, #&f0 ; 3 | |
| and r3, r3, #&0f ; 3 | |
| ldr r12, [r11, r12, lsr #2] ; 3 | |
| ldr r3, [r11, r3, lsl #2] ; 3 | |
| orr r5, r5, r2, lsl #2 ; 2 | |
| orr r4, r4, r12, lsl #3 ; 3 | |
| orr r5, r5, r3, lsl #3 ; 3 | |
| sub r8, r8, #(VRAM_E - VRAM_B) | |
| str r4, [r10, #-8] | |
| str r5, [r10, #-4] | |
| MEND | MEND |
| Line 161 $label add r2, r8, r9, lsr #17 | Line 171 $label add r2, r8, r9, lsr #17 |
| ; tmp r2, r3 / r4, r5, r12 (GRPHDATASET) | ; tmp r2, r3 / r4, r5, r12 (GRPHDATASET) |
| ; input - r2 = pos r3 = gdc | ; input - r2 = pos r3 = gdc |
| gp_all ldr r12, [r2, r3] | gp_all orr r9, r9, r12, lsl #(1 + 17) ; (vad << 17) |
| orr r9, r9, r12, lsl #(1 + 17) ; (vad << 17) | |
| mov r12, r12, lsr #(4 + 16) ; remain | mov r12, r12, lsr #(4 + 16) ; remain |
| orr r0, r0, r12, lsl #22 ; (remain << 22) | orr r0, r0, r12, lsl #22 ; (remain << 22) |
| gpa_lineylp1 and r12, r6, #(&1f << 12) ; mul ! | gpa_lineylp1 and r12, r6, #(&1f << 12) ; mul ! |
| Line 172 gpa_lineylp2 add r1, r1, #640 | Line 181 gpa_lineylp2 add r1, r1, #640 |
| tstne r6, #(1 << 22) | tstne r6, #(1 << 22) |
| bne gpa_lineyed | bne gpa_lineyed |
| sub r10, r1, #640 | sub r10, r1, #640 |
| gpa_pixlp GRPHDATASET | gpa_pixlp add r10, r10, #8 |
| GRPHDATASET | |
| add r9, r9, #(1 << 17) | add r9, r9, #(1 << 17) |
| add r10, r10, #8 | |
| cmp r10, r1 | cmp r10, r1 |
| bcc gpa_pixlp | bcc gpa_pixlp |
| sub r9, r9, #(80 << 17) | |
| ldr r2, gp_renewline | ldr r2, gp_renewline |
| sub r9, r9, #(80 << 17) | |
| ; | |
| ldrb r3, [r2, r6, lsr #23] | ldrb r3, [r2, r6, lsr #23] |
| bic r9, r9, #(3 << 8) | |
| ; | |
| orr r3, r3, r9 | orr r3, r3, r9 |
| strb r3, [r2, r6, lsr #23] | strb r3, [r2, r6, lsr #23] |
| bic r9, r9, #(3 << 8) | |
| gpa_lineyed add r6, r6, #(1 << 23) | gpa_lineyed add r6, r6, #(1 << 23) |
| cmp r6, r6, lsl #20 | cmp r6, r6, lsl #20 |
| bcs makegrph_ed | bcs makegrph_ed |
| Line 199 gpa_break ldr r3, gp_gdc | Line 210 gpa_break ldr r3, gp_gdc |
| bic r6, r6, #(&1f << 17) | bic r6, r6, #(&1f << 17) |
| mov pc, lr | mov pc, lr |
| gp_indirty ldr r12, [r2, r3] | gp_indirty orr r9, r9, r12, lsl #(1 + 17) ; (vad << 17) |
| orr r9, r9, r12, lsl #(1 + 17) ; (vad << 17) | |
| mov r12, r12, lsr #(4 + 16) ; remain | mov r12, r12, lsr #(4 + 16) ; remain |
| orr r0, r0, r12, lsl #22 ; (remain << 22) | orr r0, r0, r12, lsl #22 ; (remain << 22) |
| gpi_lineylp1 and r12, r6, #(&1f << 12) ; mul ! | gpi_lineylp1 and r12, r6, #(&1f << 12) ; mul ! |
| Line 209 gpi_lineylp2 add r1, r1, #640 | Line 219 gpi_lineylp2 add r1, r1, #640 |
| tst r6, #(1 << 23) | tst r6, #(1 << 23) |
| tstne r6, #(1 << 22) | tstne r6, #(1 << 22) |
| bne gpi_lineyed | bne gpi_lineyed |
| ldrb r2, [r7, r9, lsr #17] | |
| sub r10, r1, #640 | sub r10, r1, #640 |
| gpi_pixlp ldrb r2, [r7, r9, lsr #17] | gpi_pixlp add r10, r10, #8 |
| ands r2, r2, r9 | ands r2, r2, r9 |
| beq gpi_pixnt | beq gpi_pixnt |
| orr r9, r9, r2, lsl #8 | orr r9, r9, r2, lsl #8 |
| GRPHDATASET | GRPHDATASET |
| gpi_pixnt add r9, r9, #(1 << 17) | gpi_pixnt add r9, r9, #(1 << 17) |
| add r10, r10, #8 | |
| cmp r10, r1 | cmp r10, r1 |
| ldrccb r2, [r7, r9, lsr #17] | |
| bcc gpi_pixlp | bcc gpi_pixlp |
| sub r9, r9, #(80 << 17) | sub r9, r9, #(80 << 17) |
| tst r9, #(3 << 8) | ldr r2, gp_renewline ; prepare |
| ands r10, r9, #(3 << 8) | |
| beq gpi_lineyed | beq gpi_lineyed |
| ldr r2, gp_renewline | |
| ldrb r3, [r2, r6, lsr #23] | ldrb r3, [r2, r6, lsr #23] |
| orr r3, r3, r9, lsr #8 | |
| strb r3, [r2, r6, lsr #23] | |
| bic r9, r9, #(3 << 8) | bic r9, r9, #(3 << 8) |
| ; | |
| orr r3, r3, r10, lsr #8 | |
| strb r3, [r2, r6, lsr #23] | |
| gpi_lineyed add r6, r6, #(1 << 23) | gpi_lineyed add r6, r6, #(1 << 23) |
| cmp r6, r6, lsl #20 | cmp r6, r6, lsl #20 |
| bcs makegrph_ed | bcs makegrph_ed |
| Line 245 gpi_break ldr r3, gp_gdc | Line 257 gpi_break ldr r3, gp_gdc |
| makegrph stmdb sp!, {r4 - r11, lr} | makegrph stmdb sp!, {r4 - r11, lr} |
| ldr r4, gp_dsync | |
| ldr r7, gp_vramupdate | ldr r7, gp_vramupdate |
| ldr r8, gp_vmem | ldr r8, gp_vmem |
| ldr r11, gp_gtable0 | |
| ldr r3, gp_gdc | |
| ldr r4, gp_dsync | |
| ldr r2, [r4, #DS_GRPHVAD] | ldr r2, [r4, #DS_GRPHVAD] |
| ands r0, r0, #1 | ands r0, r0, #1 |
| addne r2, r2, #SURFACE_SIZE | |
| addne r8, r8, #VRAM_STEP | addne r8, r8, #VRAM_STEP |
| addne r2, r2, #SURFACE_SIZE | |
| ldr r3, gp_gdc | |
| ldr r11, gp_gtable0 | |
| mov r9, #1 | mov r9, #1 |
| ldrb r5, [r3, #G_CLOCK] | |
| mov r9, r9, lsl r0 | mov r9, r9, lsl r0 |
| ldrb r12, [r3, #G_CLOCK] | |
| ldrb r0, [r3, #(G_SLAVE + GD_PARA + GDC_PITCH)] | ldrb r0, [r3, #(G_SLAVE + GD_PARA + GDC_PITCH)] |
| tst r12, #&80 | tst r5, #&80 |
| moveq r0, r0, lsl #1 | moveq r0, r0, lsl #1 |
| and r0, r0, #&fe ; mg.pitch | and r0, r0, #&fe ; mg.pitch |
| ldr r6, [r4, #DS_GRPH_VBP] | ldr r6, [r4, #DS_GRPH_VBP] |
| ldrb r12, [r3, #G_MODE1] | ldrb r12, [r3, #G_MODE1] |
| ldrb r5, [r3, #(G_SLAVE + GD_PARA + GDC_CSRFORM)] | |
| mov r6, r6, lsl #23 ; mg.liney << 23 | mov r6, r6, lsl #23 ; mg.liney << 23 |
| and r12, r12, #&10 | and r12, r12, #&10 |
| orr r6, r6, r12, lsl #(22 - 4) ; gdc.mode1:bit4 << 22 | orr r6, r6, r12, lsl #(22 - 4) ; gdc.mode1:bit4 << 22 |
| ldrb r12, [r3, #(G_SLAVE + GD_PARA + GDC_CSRFORM)] | and r5, r5, #&1f |
| and r12, r12, #&1f | |
| orr r6, r6, r12, lsl #12 ; mg.lr << 12 | |
| ldr r12, [r4, #DS_GRPHYMAX] | ldr r12, [r4, #DS_GRPHYMAX] |
| orr r6, r6, r5, lsl #12 ; mg.lr << 12 | |
| ldr r5, gp_np2vram | |
| orr r6, r6, r12, lsl #3 ; dsync.grphymax << 3 | orr r6, r6, r12, lsl #3 ; dsync.grphymax << 3 |
| cmp r1, #0 | cmp r1, #0 |
| ldr r1, gp_np2vram | add r1, r5, r2 |
| add r1, r1, r2 | |
| bne mg_alp | bne mg_alp |
| mg_ilp mov r2, #(G_SLAVE + GD_PARA + GDC_SCROLL + 0) | mg_ilp ldr r12, [r3, #(G_SLAVE + GD_PARA + GDC_SCROLL + 0)] |
| bl gp_indirty | bl gp_indirty |
| mov r2, #(G_SLAVE + GD_PARA + GDC_SCROLL + 4) | ldr r12, [r3, #(G_SLAVE + GD_PARA + GDC_SCROLL + 4)] |
| bl gp_indirty | bl gp_indirty |
| ldr r12, gp_np2cfg | ldr r12, gp_np2cfg |
| ldrb r12, [r12, #NC_UPD72020] | ldrb r12, [r12, #NC_UPD72020] |
| cmp r12, #0 | cmp r12, #0 |
| bne mg_ilp | bne mg_ilp |
| mov r2, #(G_SLAVE + GD_PARA + GDC_SCROLL + 8) | ldr r12, [r3, #(G_SLAVE + GD_PARA + GDC_SCROLL + 8)] |
| bl gp_indirty | bl gp_indirty |
| mov r2, #(G_SLAVE + GD_PARA + GDC_SCROLL + 12) | ldr r12, [r3, #(G_SLAVE + GD_PARA + GDC_SCROLL + 12)] |
| bl gp_indirty | bl gp_indirty |
| b mg_ilp | b mg_ilp |
| mg_alp mov r2, #(G_SLAVE + GD_PARA + GDC_SCROLL + 0) | mg_alp ldr r12, [r3, #(G_SLAVE + GD_PARA + GDC_SCROLL + 0)] |
| bl gp_all | bl gp_all |
| mov r2, #(G_SLAVE + GD_PARA + GDC_SCROLL + 4) | ldr r12, [r3, #(G_SLAVE + GD_PARA + GDC_SCROLL + 4)] |
| bl gp_all | bl gp_all |
| ldr r12, gp_np2cfg | ldr r12, gp_np2cfg |
| ldrb r12, [r12, #NC_UPD72020] | ldrb r12, [r12, #NC_UPD72020] |
| cmp r12, #0 | cmp r12, #0 |
| bne mg_alp | bne mg_alp |
| mov r2, #(G_SLAVE + GD_PARA + GDC_SCROLL + 8) | ldr r12, [r3, #(G_SLAVE + GD_PARA + GDC_SCROLL + 8)] |
| bl gp_all | bl gp_all |
| mov r2, #(G_SLAVE + GD_PARA + GDC_SCROLL + 12) | ldr r12, [r3, #(G_SLAVE + GD_PARA + GDC_SCROLL + 12)] |
| bl gp_all | bl gp_all |
| b mg_alp | b mg_alp |
| makegrph_ed mov r3, r9 | makegrph_ed and r3, r9, #255 |
| and r3, r3, #255 | sub r8, r7, #4 |
| orr r3, r3, r3, lsl #8 | orr r3, r3, r3, lsl #8 |
| orr r3, r3, r3, lsl #16 | |
| mov r4, #0 | mov r4, #0 |
| orr r3, r3, r3, lsl #16 | |
| mg_updclear ldr r12, [r7, r4] | mg_updclear ldr r12, [r7, r4] |
| bic r12, r12, r3 | |
| str r12, [r7, r4] | |
| add r4, r4, #4 | add r4, r4, #4 |
| cmp r4, #&8000 | cmp r4, #&8000 |
| bic r12, r12, r3 | |
| str r12, [r8, r4] | |
| bcc mg_updclear | bcc mg_updclear |
| ldmia sp!, {r4 - r11, pc} | ldmia sp!, {r4 - r11, pc} |
| gp_dsync dcd dsync | |
| gp_vramupdate dcd vramupdate | gp_vramupdate dcd vramupdate |
| gp_vmem dcd mem + VRAM_B | gp_vmem dcd i286acore + CPU_SIZE + VRAM_B |
| gp_gtable0 dcd grph_table0 | |
| gp_gdc dcd gdc - G_MASTER | gp_gdc dcd gdc - G_MASTER |
| gp_gtable0 dcd grph_table0 | |
| gp_np2vram dcd np2_vram | gp_np2vram dcd np2_vram |
| gp_dsync dcd dsync | |
| gp_renewline dcd renewal_line | gp_renewline dcd renewal_line |
| gp_np2cfg dcd np2cfg | gp_np2cfg dcd np2cfg |