don't click here

Sonic Classic Heroes

Discussion in 'Engineering & Reverse Engineering' started by flamewing, Nov 2, 2010.

  1. Selbi

    Selbi

    The Euphonic Mess Member
    1,485
    10
    18
    Northern Germany
    Sonic ERaZor
    I'm with 4. You don't need a clock next to a timer, unless you are too stupid to understand, that it is a timer. And I love these round icons.
     
  2. Jimmy Hedgehog

    Jimmy Hedgehog

    Member
    1,728
    8
    18
    England - Slough
    Getting the motivation to continue old projects
    I say 4, since it looks more like the actual Heroes HUD and I like the round icons. Coincidentally in my Sonic 1 hack I currently have the timer and rings the same way 4 has, and even the score too to make it more Adventure 2 like XD
     
  3. Yuzu

    Yuzu

    Member
    2,482
    26
    28
    4.

    It's more like the original Sonic Heroes HUD, plus it has a timer long enough to be useful for speedruns and no useless timer icon. :P
     
  4. Covarr

    Covarr

    Sentient Cash Register Member
    4,233
    3
    18
    Trapped in my own thoughts.
    Two stageplays, a screenplay, and an album
    4, because the round icons look nicer IMO, and the clock is ugly as sin.
     
  5. Drex

    Drex

    Lazy perfectionist Member
    800
    42
    28
    <!--quoteo(post=580546:date=Apr 21 2011, 07:11 PM:name=Covarr)--><div class='quotetop'>QUOTE (Covarr @ Apr 21 2011, 07:11 PM) <a href="index.php?act=findpost&pid=580546">[​IMG]</a></div><div class='quotemain'><!--quotec-->4, because the round icons look nicer IMO, and the clock is ugly as sin.<!--QuoteEnd--></div><!--QuoteEEnd-->
    Yeah, pretty much what he said.
     
  6. Endri

    Endri

    Officer I don't have my drivers license with me. C Tech Member
    Number 4 please, k thx bye.
     
  7. Yuski

    Yuski

    Dragons, dragons everywhere! Oldbie
    363
    12
    18
    NUMBER FOUR! :V
     
  8. roxahris

    roxahris

    Everyone's a hypocrite. Take my word for it. Member
    1,224
    0
    0
    Doing anything at all
    Two. Round icons are for sissies. Sissies.
     
  9. One more vote for 4! The round icons look cool.
     
  10. gold lightning

    gold lightning

    Member
    506
    13
    18
    Number 4 looks best to me. I don't like the clock in the others, but I do like the round life icons.
     
  11. plushifoxed

    plushifoxed

    la gis sulva za celow Oldbie
    1,691
    42
    28
    My vote's on 4. Shadic's idea is pretty neat too, though, if it's feasible.
     
  12. MotorRoach

    MotorRoach

    Member
    249
    1
    18
    I vote for 4 since I think that the round icons reflect Sonic Heroes better, and the clock icon is kind of unnecessary in my opinion.
     
  13. PsychoSk8r

    PsychoSk8r

    PsychedelAnt | Tone Turner Oldbie
    2,582
    3
    18
    Birmingham, UK
    30 Day Project: Revisited.A New Release!
    I like 4. =P
     
  14. SMTP

    SMTP

    Tech Member
    Make it so the active character's icon is on bottom though...
     
  15. Shadic

    Shadic

    Member
    1,260
    20
    18
    Olympia, WA
    Home improvement eternal
    Why bottom? Makes more sense to me that it would be on top. It was on bottom in Heroes, but that's because that part of the GUI was on the top of the screen.
     
  16. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    65
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    So far, the score tally is this:
    Code (Text):
    1. HUD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Count
    2.  #1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1
    3.  #2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3
    4.  #3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1
    5.  #4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16
    6. Shadic's&nbsp;&nbsp;&nbsp;&nbsp;2
    The clear winner is HUD #4. Shadic's idea is sadly hard to implement; rotating the icons will require loads of graphics for each step of the way, whereas the round and square icons only need adjustments in position. And while the mini score text looks interesting (and even possible to increase in width by another 4 pixels without increasing tile count), it will look out of place without the clock.

    So, now I have some new polls:
    First is a simple yes/no question: should I use these Super Sonic life icons? [​IMG]
    These are based off of the Super Sonic life icon from a Cylent Nite Super Sonic sheet. And yes, the eyes are green.

    Second is more involved: which of the following variations of the basic HUD would work best?
    [​IMG]
    I prefer the more compact layout from rows 3 and 4; and I prefer the columns with milliseconds for the timer (B, D, F, H, I, J). The ones I like the most are B3, D3, I4 and J4, with J4 being the closest to the original Heroes HUD. But I can't decide which one. (and yes, adding the one extra digit to score for columns I and J is easy).

    For the ASM heads out there that are thinking of implementing the, or have already implemented a, millisecond-accurate timer, here is a neat trick for you. If you used the (naïve) approach:
    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='codemain'><!--eg1--><pre class="asm" style="font-family:monospace;"> <span style="color: #adadad; font-style: italic;">; Naïve approach</span>
    <span style="color: #00bfff;">moveq</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">0</span>,<span style="font-weight:bold;">d1</span>
    <span style="color: #00bfff;">move</span>.<span style="color: #00bfff;">b</span> <span style="">(</span>Timer_frame<span style="">)</span>.<span style="color: #00bfff;">w</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; Load timer frames</span>
    <span style="color: #00bfff;">mulu</span>.<span style="color: #00bfff;">w</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">1000</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; *** Multiply by 1000 for millisecond resolution</span>
    <span style="color: #00bfff;">divu</span>.<span style="color: #00bfff;">w</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">60</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; *** Divide by 60 to map the result to [0-999] interval</span></pre><!--gc2--><!--CTsgTmHDr3ZlIGFwcHJvYWNoCgltb3ZlcQkjMCxkMQoJbW92ZS5iCShUaW1lcl9mcmFtZSkudyxkMSAg
    ICAgICAgIDsgTG9hZCB0aW1lciBmcmFtZXMKCW11bHUudwkjMTAwMCxkMSAgICAgICAgICAgICAgICAgI
    CA7ICoqKiBNdWx0aXBseSBieSAxMDAwIGZvciBtaWxsaXNlY29uZCByZXNvbHV0aW9uCglkaXZ1LncJIz
    YwLGQxICAgICAgICAgICAgICAgICAgICAgOyAqKiogRGl2aWRlIGJ5IDYwIHRvIG1hcCB0aGUgcmVzdWx
    0IHRvIFswLTk5OV0gaW50ZXJ2YWw=--><!--egc2--><!--g2--></div><!--eg2-->
    then there is a faster way to do it. The code marked with *** takes 198 clock pulses over 6 read cycles. Using the magic constant $10AE82, this can be done much faster without a division. Because the m68000 does not allow multiplication of 2 32-bit numbers, this has to be broken up into a multiply by $AE82 and another by $10 shifted one word up. The final code is this:
    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='geshimain'><!--eg1--><pre class="asm" style="font-family:monospace;"> <span style="color: #adadad; font-style: italic;">; Using magic numbers</span>
    <span style="color: #00bfff;">moveq</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">0</span>,<span style="font-weight:bold;">d1</span>
    <span style="color: #00bfff;">move</span>.<span style="color: #00bfff;">b</span> <span style="">(</span>Timer_frame<span style="">)</span>.<span style="color: #00bfff;">w</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; Load timer frames</span>
    <span style="color: #00bfff;">move</span>.<span style="color: #00bfff;">w</span> <span style="font-weight:bold;">d1</span>,<span style="font-weight:bold;">d2</span> <span style="color: #adadad; font-style: italic;">; *** Copy timer frames</span>
    <span style="color: #00bfff;">asl</span>.<span style="color: #00bfff;">w</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">4</span>,<span style="font-weight:bold;">d2</span> <span style="color: #adadad; font-style: italic;">; *** This is a part of the high word</span>
    <span style="color: #00bfff;">mulu</span>.<span style="color: #00bfff;">w</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">$</span><span style="color: #ff0000;">AE82</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; *** Magic constant</span>
    <span style="color: #00bfff;">swap</span> <span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; *** Divide by 2^16</span>
    <span style="color: #00bfff;">add</span>.<span style="color: #00bfff;">w</span> <span style="font-weight:bold;">d2</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; *** And now d1 = int(Timer_frame * 1000 / 60)</span>
    <span style="color: #00bfff;">andi</span>.<span style="color: #00bfff;">l</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">$</span><span style="color: #ff0000;">FFFF</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; *** Clear high word, needed for standard HUD rountines</span></pre><!--gc2--><!--CTsgVXNpbmcgbWFnaWMgbnVtYmVycwoJbW92ZXEJIzAsZDEKCW1vdmUuYgkoVGltZXJfZnJhbWUpLncs
    ZDEgICAgICAgICA7IExvYWQgdGltZXIgZnJhbWVzCgltb3ZlLncJZDEsZDIgICAgICAgICAgICAgICAgI
    CAgICAgOyAqKiogQ29weSB0aW1lciBmcmFtZXMKCWFzbC53CSM0LGQyICAgICAgICAgICAgICAgICAgIC
    AgIDsgKioqIFRoaXMgaXMgYSBwYXJ0IG9mIHRoZSBoaWdoIHdvcmQKCW11bHUudwkjJiMwMzY7QUU4Mix
    kMSAgICAgICAgICAgICAgICAgIDsgKioqIE1hZ2ljIGNvbnN0YW50Cglzd2FwCWQxICAgICAgICAgICAg
    ICAgICAgICAgICAgIDsgKioqIERpdmlkZSBieSAyXjE2CglhZGQudwlkMixkMSAgICAgICAgICAgICAgI
    CAgICAgICA7ICoqKiBBbmQgbm93IGQxID0gaW50KFRpbWVyX2ZyYW1lICogMTAwMCAvIDYwKQoJYW5kaS
    5sCSMmIzAzNjtGRkZGLGQxICAgICAgICAgICAgICAgICAgOyAqKiogQ2xlYXIgaGlnaCB3b3JkLCBuZWV
    kZWQgZm9yIHN0YW5kYXJkIEhVRCByb3VudGluZXM=--><!--egc2--><!--g2--></div><!--eg2-->
    The code marked *** takes 100 clock pulses over 10 read cycles; this means it is just about twice as fast, despite being longer.

    Edit: Moreover, the magic constant $42B is even better for the range of interest (0-59), resulting in the following code:
    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='codemain'><!--eg1--><pre class="asm" style="font-family:monospace;"> <span style="color: #00bfff;">moveq</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">0</span>,<span style="font-weight:bold;">d1</span>
    <span style="color: #00bfff;">move</span>.<span style="color: #00bfff;">b</span> <span style="">(</span>Timer_frame<span style="">)</span>.<span style="color: #00bfff;">w</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; Load timer frames</span>
    <span style="color: #00bfff;">mulu</span>.<span style="color: #00bfff;">w</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">$</span><span style="color: #ff0000;">42B</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; *** Magic constant</span>
    <span style="color: #00bfff;">lsr</span>.<span style="color: #00bfff;">w</span> <span style="color: #ff0000;">#</span><span style="color: #ff0000;">6</span>,<span style="font-weight:bold;">d1</span> <span style="color: #adadad; font-style: italic;">; *** And now d1 = int(Timer_frame * 1000 / 60)</span></pre><!--gc2--><!--CW1vdmVxCSMwLGQxCgltb3ZlLmIJKFRpbWVyX2ZyYW1lKS53LGQxICAgICAgICAgOyBMb2FkIHRpbWVy
    IGZyYW1lcwoJbXVsdS53CSMmIzAzNjs0MkIsZDEgICAgICAgICAgICAgICAgICAgOyAqKiogTWFnaWMgY
    29uc3RhbnQKCWxzci53CSM2LGQxICAgICAgICAgICAgICAgICAgICAgIDsgKioqIEFuZCBub3cgZDEgPS
    BpbnQoVGltZXJfZnJhbWUgKiAxMDAwIC8gNjAp--><!--egc2--><!--g2--></div><!--eg2-->
    which clocks at 70 clock pulses over 3 read cycles for the code marked with ***.

    Edit: Should have been lsr instead of asr in the last code box. Fixed.
     
  17. Drex

    Drex

    Lazy perfectionist Member
    800
    42
    28
    I3, I4, J3, J4... I can't decide either =/

    I won't bore you by explaining my reasons so I'll just pick J3. I do think you should add the black outline to the gray zeros like the rest of the golden numbers. They look off without it.

    Yes, use the super icon, please.
     
  18. Covarr

    Covarr

    Sentient Cash Register Member
    4,233
    3
    18
    Trapped in my own thoughts.
    Two stageplays, a screenplay, and an album
    I prefer the equal vertical spacing of rows 1 and 2, and the right alignment of columns A, B, E, F, and I.

    Not a big fan of the blue leading zeroes, I think they'd look better left out, or the same color as the rest of the numbers.
     
  19. amphobius

    amphobius

    doing more important things with my life Member
    2,120
    0
    16
    life
    I'm going to go with I4. Looks the best IMO.
     
  20. Miles3298

    Miles3298

    Member
    556
    3
    18
    For the Super Sonic icon, sure - looks good.

    For the HUD layout, I3 is my favorite.