Guest User

Aikku - DSFS Load Source

a guest
Mar 8th, 2010
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*******************************
  2. | DS-Slot Based DSFS           |
  3. | Copright 2010 (C), Aikku     |
  4. *******************************/
  5. .global dsfsLoad
  6. /******************************/
  7. .text
  8. .align
  9. .arm
  10. /******************************/
  11.  
  12. dsfsLoad:
  13.     ldr     r1, =dsfsFat
  14.     mov     r2, r0
  15. 1:  ldrb    r3, [r1], #0x01
  16.     ldrb    ip, [r0], #0x01
  17.     cmp     r3, #0x01
  18.     cmppl   r3, ip
  19.     beq     1b
  20.     add     r1, r1, #0x1F
  21.     bic     r1, r1, #0x1F
  22.     cmp     r3, ip
  23.     movne   r0, r2
  24.     bne     1b
  25.     ldmdb   r1, {r2-r3}
  26.    
  27.     stmfd   sp!, {r2-r3,lr}
  28.     mov     r0, r3
  29.     bl      malloc
  30.     cmp     r0, #0x00
  31.     ldmfd   sp!, {r2-r3,lr}
  32.     bxeq    lr
  33.    
  34.     mov     r1, #0x04000000
  35.     mov     ip, #0x80
  36.     strb    ip, [r1, #0x1A1]
  37.    
  38.     stmfd   sp!, {r0,r2,r4}
  39.  
  40. .LBlockLoop:
  41.     ldr     r2, [sp, #0x04]
  42.     add     ip, r2, #0x200
  43.     str     ip, [sp, #0x04]
  44.     mov     ip, #0xB7
  45.     strb    r1, [r1, #0x1AD]
  46.     strb    r1, [r1, #0x1AE]
  47.     strb    r1, [r1, #0x1AF]
  48.     strb    ip, [r1, #0x1A8]
  49.     strb    r2, [r1, #0x1AC]
  50.     mov     r2, r2, lsr #0x08
  51.     strb    r2, [r1, #0x1AB]
  52.     mov     r2, r2, lsr #0x08
  53.     strb    r2, [r1, #0x1AA]
  54.     mov     r2, r2, lsr #0x08
  55.     strb    r2, [r1, #0x1A9]
  56.     add     ip, r1, #0x100000
  57.     mov     r4, #0x200
  58.    
  59.     ldr     r2, =0xA1400000
  60.     str     r2, [r1, #0x1A4]
  61. 1:  ldr     r2, [r1, #0x1A4]
  62.     tst     r2, #0x800000
  63.     beq     1b
  64.    
  65.     ldr     r2, [ip, #0x10]
  66.     str     r2, [r0], #0x04
  67.    
  68.     subs    r4, r4, #0x04
  69.     bne     1b
  70.    
  71.     subs    r3, r3, #0x200
  72.     bne     .LBlockLoop
  73.  
  74. 1:  ldmfd   sp!, {r0,r2,r4}
  75.     bx      lr
  76.  
  77. .size dsfsLoad, .-dsfsLoad
  78.  
  79. /******************************/
  80. .section .fat
  81. /******************************/
  82.  
  83. dsfsFat:
  84.     .byte 'd', 's', 'f', 's', 't', 'a', 'b', 0
  85.     .space (256-1) * 32
  86.  
  87. .size dsfsFat, .-dsfsFat
  88.  
  89. /******************************/
Advertisement
Add Comment
Please, Sign In to add comment