X-Git-Url: https://git.distorted.org.uk/~mdw/ssr/blobdiff_plain/a3da4c116d4216fdec125d687dfc347e343a8b28..c1b567d833a004bb3d978f1f7c99f42cefa7845c:/StraySrc/Utilities/resgen.bas diff --git a/StraySrc/Utilities/resgen.bas b/StraySrc/Utilities/resgen.bas new file mode 100644 index 0000000..01e2f29 --- /dev/null +++ b/StraySrc/Utilities/resgen.bas @@ -0,0 +1,37 @@ +REM crunched "b.resgen" +ONERRORERROREXT0,REPORT$+" ["+STR$(ERL)+"]" +DIMq% 1024:SYS16TOA_$:IFINSTR(A_$,"-quit")=0THENERROR1,"resGen must be started using *Run" +A_$=MID$(A_$,INSTR(A_$,"""")+1):A_$=MID$(A_$,INSTR(A_$," ")+1):A_$=LEFT$(A_$,INSTR(A_$,"""")-1):B_$=FNC_(A_$):D_$=FNC_(A_$):IFB_$=""ORD_$=""THENERROR0,"Syntax: resGen " +LIBRARY"libs:bas":PROCbas_init:PROCE_:PROCbas_aofInit(256*1024):FORpass=4TO6STEP2:[opt pass:FNpass:FNarea("Resources$$Data","CODE,READONLY"):]:PROCF_(B_$+".Sprites"):PROCG_(B_$+".Messages"):PROCH_(B_$+".Templates"):NEXT:PROCbas_aofSaveAs(D_$):END +DEFPROCF_(I_$):[opt pass:FNexport("rsc_sprites"):.rsc_sprites:dcd (FNfSize(I_$)+4+3)AND-4:FNbin(I_$):FNalign:]:ENDPROC +DEFPROCG_(J_$):[opt pass:FNexport("rsc_msgBase"):.rsc_msgBase:]:A%=O%:B%=A%+FNfSize(J_$):SYS8,16,J_$,A%,0:l%=USR(K_)-A%:O%+=l%:P%+=l%:[opt pass:dcb 0:FNexport("rsc_msgLimit"):.rsc_msgLimit:FNalign:]:ENDPROC +DEFFNL_(l$)=EVAL("FNassign("+l$+","+STR$(P%)+")") +DEFFNM_(l$)=EVAL(l$) +DEFFNassign(RETURNx%,y%):x%=y%:=0 +DEFPROCH_(N_$):IFpass=4THEN +SYS8,17,N_$TO,,,,O_%:DIMP_% O_%:SYS8,16,N_$,P_%,0 +ENDIF:[opt pass:FNexport("rsc_tplBase"):.rsc_tplBase:]:Q_%=P_%+16:WHILEQ_%!0:CASEQ_%!8OF +WHEN1:R_$=FNS_(Q_%+12):[opt pass:dcb R_$:dcb 0:FNalign:dcdFNM_("__"+R_$):] +OTHERWISE:ERROR1,"Template type "+STR$(Q_%!0)+" unrecognised" +ENDCASE:Q_%+=24:ENDWHILE:[opt pass:FNexport("rsc_tplLimit"):.rsc_tplLimit:]:B%=P_%+16:C%=P_%:WHILEB%!0:CASEB%!8OF +WHEN1:R_$=FNS_(B%+12):[opt pass:FNL_("__"+R_$):]:A%=O%:l%=USR(T_)-A%:P%+=l%:O%+=l%:[opt pass:FNalign:] +OTHERWISE:ERROR1,"Template type "+STR$(Q_%!0)+" unrecognised" +ENDCASE:B%+=24:ENDWHILE:ENDPROC +DEFFNS_(a%):LOCALs$:WHILE?a%>=32:s$+=CHR$(?a%):a%+=1:ENDWHILE:=s$ +DEFFNC_(RETURNU_$):LOCALC_$:IFINSTR(U_$," ")THEN +C_$=LEFT$(U_$,INSTR(U_$," ")-1):U_$=MID$(U_$,INSTR(U_$," ")+1) +ELSE:C_$=U_$:U_$="" +ENDIF:=C_$ +DEFFNV_(U_$):LOCALi%:$q%=U_$:FORi%=0TOLEN(U_$)-1:IFq%?i%>=97ANDq%?i%<=122THENq%?i%-=32 +NEXT:=$q% +DEFPROCE_:DIMW_% 4096:FORo=0TO2STEP2:P%=W_%:[opt o:.K_:stmfd r13!,{r14}:mov r2,r0:.X_:cmp r2,r1:bcs Y_:ldrb r14,[r2],#1:cmp r14,#&21:bcc X_:cmp r14,#ASC(";"):cmpne r14,#ASC("#"):cmpne r14,#ASC("|"):beq Z_:.a_:cmp r14,#&20:movcc r14,#0 +strb r14,[r0],#1:ldrcsb r14,[r2],#1:bcs a_:b X_:.Z_:ldrb r14,[r2],#1:cmp r14,#&20:bcs Z_:b X_:.Y_:ldmfd r13!,{pc}^:.T_:stmfd r13!,{r14}:add r11,r0,#12:mov r10,r0:mov r9,r2:ldr r14,[r1,#0]:add r8,r9,r14:mov r14,#64 +orr r14,r14,#1<<28:str r14,[r11],#4:ldr r0,[r8,#56]:add r1,r8,#72:bl b_:ldr r7,[r8,#84]:add r6,r8,#88:.c_:subs r7,r7,#1:ldrcs r0,[r6,#16]:addcs r1,r6,#20:blcs b_:addcs r6,r6,#32:bcs c_:sub r14,r11,r10:str r14,[r10,#0] +mov r14,r8:mov r7,#72:.c_:subs r7,r7,#16:ldmcsia r14!,{r0-r3}:stmcsia r11!,{r0-r3}:bcs c_:ldmia r14!,{r0,r1}:stmia r11!,{r0,r1}:ldr r0,[r8,#56]:add r1,r8,#72:mov r5,#0:bl d_:ldr r7,[r8,#84]:str r7,[r11],#4:add r6,r8,#88:.c_ +subs r7,r7,#1:ldmcsia r6,{r0-r3,r14}:stmcsia r11!,{r0-r3,r14}:ldrcs r0,[r6,#16]:addcs r1,r6,#20:blcs d_:addcs r6,r6,#32:bcs c_:sub r14,r11,r10:str r14,[r10,#4]:ldr r0,[r8,#56]:add r1,r8,#72:bl e_:ldr r7,[r8,#84]:add r6,r8,#88 +.c_:subs r7,r7,#1:ldrcs r0,[r6,#16]:addcs r1,r6,#20:blcs e_:addcs r6,r6,#32:bcs c_:sub r14,r11,r10:str r14,[r10,#8]:mov r0,r11:ldmfd r13!,{pc}^:.b_:tst r0,#&100:moveqs pc,r14:stmfd r13!,{r14}:sub r14,r1,r8:str r14,[r11],#4 +and r14,r0,#&3:cmp r14,#&2:beq f_:ldr r14,[r1,#4]:cmn r14,#-(-1):subne r14,r1,r8:addne r14,r14,#4:strne r14,[r11],#4:ldmfd r13!,{pc}^:.f_:sub r14,r8,r1:add r14,r14,#4:orr r14,r14,#(2<<28):str r14,[r11],#4:ldmfd r13!,{pc}^:.d_ +tst r0,#&100:beq g_:stmfd r13!,{r14}:str r5,[r11],#4:ldr r14,[r1,#8]:add r5,r5,r14:and r14,r0,#&3:cmp r14,#&2:beq h_:ldr r14,[r1,#4]:cmn r14,#-(-1):beq i_:str r5,[r11],#4:add r2,r8,r14:.c_:ldrb r14,[r2],#1:add r5,r5,#1 +cmp r14,#&20:bcs c_:b j_:.h_:mov r14,#1:.i_:str r14,[r11],#4:.j_:ldr r14,[r1,#8]:str r14,[r11],#4:ldmfd r13!,{pc}^:.g_:ldmia r1,{r0-r2}:stmia r11!,{r0-r2}:movs pc,r14:.e_:tst r0,#&100:moveqs pc,r14:stmfd r13!,{r14}:mov r2,r11 +ldr r14,[r1,#0]:add r3,r8,r14:.c_:ldrb r14,[r3],#1:cmp r14,#&20:movcc r14,#0:strb r14,[r2],#1:bcs c_:ldr r14,[r1,#8]:add r11,r11,r14:mov r14,#0:.c_:cmp r2,r11:strccb r14,[r2],#1:bcc c_:tst r0,#1:ldrne r14,[r1,#4] +cmnne r14,#-(-1):beq k_:add r2,r8,r14:.c_:ldrb r14,[r2],#1:cmp r14,#&20:movcc r14,#0:strb r14,[r11],#1:bcs c_:.k_:ldmfd r13!,{pc}^:]:NEXT:ENDPROC