don't click here

Basic Questions & Answers thread

Discussion in 'Engineering & Reverse Engineering' started by Tweaker, May 29, 2008.

  1. Ravenfreak

    Ravenfreak

    Meredith is best girl. Tech Member
    3,199
    261
    63
    O'Fallon Mo
    Hacking Sonic Drift
    When I go to build my hack, I get this error: Error : Label 'sfx_continue' multiply defined
    sfx_continue: how can I fix this error?
     
  2. Andlabs

    Andlabs

    「いっきまーす」 Wiki Sysop
    2,175
    2
    0
    Writing my own MD/Genesis sound driver :D
    This means you have two sfx_continue labels. Find the string
    Code (Text):
    1. sfx_continue:
    What are the appropriate lines?
     
  3. Jaseman

    Jaseman

    The programmer has a nap! Hold out! Programmer! Member
    954
    1
    18
    OK, I took some sprites, they didn't need scaling or resizing, and I recolored them to Sonic's Palate
    I put them into SonMapEd, edit'd the mappings, and imported the sprites. I saved the Mappings, Uncompressed Tile GFX, and Dynamic Pattern Loading Cues (or whatever). I only changed the first two frames. standing and one bored look.

    I tried to use build.bat (I am using the Sonic 1 SVN Dissasembly) and it didn't build. I got the following errors in the errors.txt:

    Code (Text):
    1. SN 68k version 2.53
    2.  
    3. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\81 CONTINUE SCREEN SONIC.ASM(22) : Error : Symbol 'map_sonic' not defined
    4. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\81 CONTINUE SCREEN SONIC.ASM(54) : Error : Symbol 'map_sonic' not defined
    5. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\59 SLZ ELEVATORS.ASM(10) : Warning : Forward reference to redefinable symbol
    6. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\5A SLZ CIRCLING PLATFORM.ASM(10) : Warning : Forward reference to redefinable symbol
    7. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\5B STAIRCASE.ASM(10) : Warning : Forward reference to redefinable symbol
    8. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\5E SEESAW.ASM(10) : Warning : Forward reference to redefinable symbol
    9. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\SONIC.ASM(6797) : Error : Symbol 'map_sonic' not defined
    10. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(38) : Error : Symbol 'fr_walk13' not defined
    11. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(38) : Error : Symbol 'fr_walk14' not defined
    12. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(38) : Error : Symbol 'fr_walk15' not defined
    13. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(38) : Error : Symbol 'fr_walk16' not defined
    14. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(38) : Error : Symbol 'fr_walk11' not defined
    15. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(38) : Error : Symbol 'fr_walk12' not defined
    16. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(40) : Error : Symbol 'fr_run11' not defined
    17. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(40) : Error : Symbol 'fr_run12' not defined
    18. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(40) : Error : Symbol 'fr_run13' not defined
    19. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(40) : Error : Symbol 'fr_run14' not defined
    20. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(42) : Error : Symbol 'fr_roll1' not defined
    21. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(42) : Error : Symbol 'fr_roll2' not defined
    22. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(42) : Error : Symbol 'fr_roll3' not defined
    23. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(42) : Error : Symbol 'fr_roll4' not defined
    24. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(42) : Error : Symbol 'fr_roll5' not defined
    25. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(44) : Error : Symbol 'fr_roll1' not defined
    26. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(44) : Error : Symbol 'fr_roll2' not defined
    27. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(44) : Error : Symbol 'fr_roll5' not defined
    28. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(44) : Error : Symbol 'fr_roll3' not defined
    29. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(44) : Error : Symbol 'fr_roll4' not defined
    30. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(44) : Error : Symbol 'fr_roll5' not defined
    31. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(46) : Error : Symbol 'fr_push1' not defined
    32. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(46) : Error : Symbol 'fr_push2' not defined
    33. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(46) : Error : Symbol 'fr_push3' not defined
    34. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(46) : Error : Symbol 'fr_push4' not defined
    35. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    36. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    37. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    38. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    39. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    40. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    41. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    42. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    43. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(48) : Error : Symbol 'fr_stand' not defined
    44. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_stand' not defined
    45. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_stand' not defined
    46. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_stand' not defined
    47. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_wait2' not defined
    48. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_wait1' not defined
    49. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_wait1' not defined
    50. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_wait1' not defined
    51. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_wait2' not defined
    52. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(49) : Error : Symbol 'fr_wait3' not defined
    53. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(51) : Error : Symbol 'fr_balance1' not defined
    54. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(51) : Error : Symbol 'fr_balance2' not defined
    55. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(53) : Error : Symbol 'fr_lookup' not defined
    56. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(55) : Error : Symbol 'fr_duck' not defined
    57. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(57) : Error : Symbol 'fr_warp1' not defined
    58. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(59) : Error : Symbol 'fr_warp2' not defined
    59. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(61) : Error : Symbol 'fr_warp3' not defined
    60. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(63) : Error : Symbol 'fr_warp4' not defined
    61. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(65) : Error : Symbol 'fr_stop1' not defined
    62. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(65) : Error : Symbol 'fr_stop2' not defined
    63. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(67) : Error : Symbol 'fr_float1' not defined
    64. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(67) : Error : Symbol 'fr_float4' not defined
    65. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(69) : Error : Symbol 'fr_float1' not defined
    66. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(69) : Error : Symbol 'fr_float2' not defined
    67. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(69) : Error : Symbol 'fr_float5' not defined
    68. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(69) : Error : Symbol 'fr_float3' not defined
    69. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(69) : Error : Symbol 'fr_float6' not defined
    70. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(71) : Error : Symbol 'fr_spring' not defined
    71. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(73) : Error : Symbol 'fr_hang1' not defined
    72. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(73) : Error : Symbol 'fr_hang2' not defined
    73. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(75) : Error : Symbol 'fr_leap1' not defined
    74. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(75) : Error : Symbol 'fr_leap1' not defined
    75. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(75) : Error : Symbol 'fr_leap1' not defined
    76. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(77) : Error : Symbol 'fr_leap1' not defined
    77. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(77) : Error : Symbol 'fr_leap2' not defined
    78. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(79) : Error : Symbol 'fr_surf' not defined
    79. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(81) : Error : Symbol 'fr_getair' not defined
    80. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(81) : Error : Symbol 'fr_getair' not defined
    81. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(81) : Error : Symbol 'fr_walk15' not defined
    82. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(81) : Error : Symbol 'fr_walk16' not defined
    83. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(83) : Error : Symbol 'fr_burnt' not defined
    84. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(85) : Error : Symbol 'fr_drown' not defined
    85. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(87) : Error : Symbol 'fr_death' not defined
    86. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(89) : Error : Symbol 'fr_shrink1' not defined
    87. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(89) : Error : Symbol 'fr_shrink2' not defined
    88. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(89) : Error : Symbol 'fr_shrink3' not defined
    89. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(89) : Error : Symbol 'fr_shrink4' not defined
    90. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(89) : Error : Symbol 'fr_shrink5' not defined
    91. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(89) : Error : Symbol 'fr_null' not defined
    92. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(91) : Error : Symbol 'fr_injury' not defined
    93. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(94) : Error : Symbol 'fr_injury' not defined
    94. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(94) : Error : Symbol 'fr_waterslide' not defined
    95. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(96) : Error : Symbol 'fr_null' not defined
    96. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(98) : Error : Symbol 'fr_float1' not defined
    97. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(98) : Error : Symbol 'fr_float2' not defined
    98. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(98) : Error : Symbol 'fr_float5' not defined
    99. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(98) : Error : Symbol 'fr_float3' not defined
    100. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(98) : Error : Symbol 'fr_float6' not defined
    101. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_ANIM\SONIC.ASM(100) : Error : Symbol 'fr_float1' not defined
    102. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\SONIC LOADGFX.ASM(15) : Error : Symbol 'sonicdynplc' not defined
    103. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ9 SONIC IN SPECIAL STAGE.ASM(28) : Error : Symbol 'map_sonic' not defined
    104. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\DEBUGMODE.ASM(183) : Error : Symbol 'map_sonic' not defined
    105. C:\USERS\EVERYBODY\DESKTOP\PROJECTS\SONIC 1 DISASSEMBLY\_INCOBJ\DEBUGMODE.ASM(195) : Error : Symbol 'map_sonic' not defined
    106.  
    107. Assembly completed.
    108. 99 error(s) from 51054 lines in 3.6 seconds
    And no, it didn't assemble.



    plshelpkthx
     
  4. Quickman

    Quickman

    be attitude for gains Tech Member
    5,604
    19
    18
    :x
    omg porjcet
    My psychic powers tell me you saved your mappings in ASM format.

    The act of saving loses all the label naming which is present in the original mappings, so when anything tries to reference those labels it can't find them because the new names are essentially randomly generated by SonMapEd.

    You need to go through and repair all the labels in the ASM file you saved to the original labels.
     
  5. Selbi

    Selbi

    The Euphonic Mess Tech Member
    1,541
    155
    43
    Northern Germany
    Sonic ERaZor
    Not really a problem, but a random question: I added far over 40 new flags (most of them are being used just once in a whole game play, but I'm too lazy to crop that down). To clear all those flag, I made a subroutine called ClearEverySpecialFlag. But that's not too important. However, the structure of that routine is this:
    Code (ASM):
    1. ; ---------------------------------------------------------------------------
    2. ; Subroutine to clear every special flag (e.g. cutscenes, custom bosses)
    3. ; ---------------------------------------------------------------------------
    4.  
    5. ClearEverySpecialFlag:
    6.         clr.b   ($FFFFFFA0).w
    7.         clr.b   ($FFFFFFA1).w
    8.         clr.b   ($FFFFFFA2).w
    9.         clr.b   ($FFFFFFA3).w
    10.         clr.b   ($FFFFFFA4).w
    11.         ...
    Imagine there are 42 of those clr.b lines. Now I was wondering, are there any quicker and more professional ways to do this?
     
  6. Andlabs

    Andlabs

    「いっきまーす」 Wiki Sysop
    2,175
    2
    0
    Writing my own MD/Genesis sound driver :D
    Assuming all of these flags are contiguous,
    Code (ASM):
    1. ClearEverySpecialFlag:
    2.     lea ($FFFFFFA0).w,a0
    3.     move.l  #41,d0
    4. clearloop:
    5.     clr.b   (a0)+
    6.     dbf d0,clearloop
    7.     rts
    Remember, for dbf, the index must always be count-1.
     
  7. Hanoch

    Hanoch

    Also known as TheKnock, Birashot Member
    491
    0
    0
    Israel
    everything
    You could also create a special macro to clear those flags:

    Code (ASM):
    1.  
    2. clearflags macro
    3.            lea  ($FFFFFFA0).w,a0
    4.            move.l #41,d0
    5. clearloop: 
    6.            clr.b (a0)+
    7.            dbf  d0,clearloop
    8.            endm
    9.  
    Not that if not all of these flags are between $FFA0 till $FFE1 then you will have to clear most of those ram adresses manualy.
     
  8. nineko

    nineko

    I am the Holy Cat Tech Member
    6,420
    585
    93
    italy
    1. if they're flags, you don't need A WHOLE BYTE for each of them. Learn how to use bitfields, and you'll store 8 flags in the same byte;
    2. I *think* that moveq is faster, though I wouldn't bet money over this;
    3. 42 identical lines might be ugly, but they're actually faster than a dbf. This is called "loop unrolling".
    edit: you can also clear 4 bytes at the same time by using move.l #$0,(address).w if you don't want to use moveq.
     
  9. ClearEverySpecialFlag:
    lea ($FFFFFFA0).w,a0
    move.l #4,d0
    clearloop:
    clr.l (a0)+
    dbf d0,clearloop
    clr.b (a0)
    rts

    wouldn't this work a bit faster?
     
  10. Andlabs

    Andlabs

    「いっきまーす」 Wiki Sysop
    2,175
    2
    0
    Writing my own MD/Genesis sound driver :D
    Probably, but it won't be clean if he doesn't have an even # of flags divisible by 4.
     
  11. nineko

    nineko

    I am the Holy Cat Tech Member
    6,420
    585
    93
    italy
    I repeat. The fastest way is to avoid the dbf and unroll the loop.

    So:
    move.l #$0, ($FFFFFFA0).w
    move.l #$0, ($FFFFFFA4).w
    move.l #$0, ($FFFFFFA8).w
    move.l #$0, ($FFFFFFAC).w
    move.l #$0, ($FFFFFFB0).w
    move.l #$0, ($FFFFFFB4).w
    move.l #$0, ($FFFFFFB8).w
    move.l #$0, ($FFFFFFBC).w
    move.l #$0, ($FFFFFFC0).w
    move.l #$0, ($FFFFFFC4).w
    move.w #$0, ($FFFFFFC8).w

    /question

    And I still believe he should group these flags in bitfields where applicable, it's unrealistic to use 42 bytes of memory to store your flags :x
     
  12. Selbi

    Selbi

    The Euphonic Mess Tech Member
    1,541
    155
    43
    Northern Germany
    Sonic ERaZor
    Ok, I guess nineko won here. This way is claimed to be the fastest one, so I'll take it.

    And probably no, I will not change the other flags into bits (not because I'm not able to do it, but because I'm a lazy fuck). But I'll use bits in the future then. =P
     
  13. MainMemory

    MainMemory

    Has-Been Modder Tech Member
    4,820
    412
    63
    Myself
    How do I find the line where the game checks if you've touched the button on the Egg Prison in Sonic 2? (2007 disasm)
     
  14. You can either set up a flag with a blank RAM value:

    move.b #1(RAM VALUE).w


    And put it in say, the egg prison object, or even the results object (Obj3A:)


    then test for it,

    tst.b (RAM VALUE).w
     
  15. MainMemory

    MainMemory

    Has-Been Modder Tech Member
    4,820
    412
    63
    Myself
    That doesn't help, I need the line where the check is performed because I need to run some code immediately when the button is pressed (I've already added this code to the signpost).
     
  16. Selbi

    Selbi

    The Euphonic Mess Tech Member
    1,541
    155
    43
    Northern Germany
    Sonic ERaZor
    That should be:
    Code (ASM):
    1. loc_3F2B4:
    2.     movea.w objoff_38(a0),a1 ; a1=object
    3.     tst.w   objoff_32(a1)
    4.     beq.s   return_3F2FA
    5.  ; --> Put your stuff in here
    6.     movea.w objoff_3A(a0),a2 ; a2=object
    7.     jsr (SingleObjLoad).l
    8.     bne.s   loc_3F2E0
    9.     ...
    I tested it with an rts and nothing happened when I jumped on the button. So that should work.
     
  17. Quickman

    Quickman

    be attitude for gains Tech Member
    5,604
    19
    18
    :x
    omg porjcet
    Nine times out of ten it doesn't matter how many cycles you use AFAIK.
     
  18. MainMemory

    MainMemory

    Has-Been Modder Tech Member
    4,820
    412
    63
    Myself
    Thanks Selbi, that worked!
     
  19. Andlabs

    Andlabs

    「いっきまーす」 Wiki Sysop
    2,175
    2
    0
    Writing my own MD/Genesis sound driver :D
    That, and unrolled loops get increasingly difficult to maintain as the number of iterations increases.
     
  20. Selbi

    Selbi

    The Euphonic Mess Tech Member
    1,541
    155
    43
    Northern Germany
    Sonic ERaZor
    Anothe question: Some time ago I asked how to check if an object is on-screen, using tst.b 1(a0). That worked perfectly. But now I will need another on-screen check, where, however, it doesn't matter if the Y-position isn't on the screen. So I just want to check if the X-position is on-screen.