Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Darkly)
  • No Skin
Collapse

Chebucto Regional Softball Club

  1. Home
  2. Uncategorized
  3. tandy put their sound chip on the 1A interrupt?
A forum for discussing and organizing recreational softball and baseball games and leagues in the greater Halifax area.

tandy put their sound chip on the 1A interrupt?

Scheduled Pinned Locked Moved Uncategorized
325 Posts 1 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Foone🏳️‍⚧️F Foone🏳️‍⚧️

    okay I figured out the cities.dat IDs:

    They're all 1XXYY (in decimal):
    XX is the city number (0-29), YY is the sub-chunk-id.

    So like:
    YY=0: City name
    YY=2: City image.

    They go between 00 and 22, and not all numbers need to be present.

    Foone🏳️‍⚧️F This user is from outside of this forum
    Foone🏳️‍⚧️F This user is from outside of this forum
    Foone🏳️‍⚧️
    wrote on last edited by
    #75

    hmm, reading a buffer and then summing all the values of the bytes in it.

    suspicious behavior.

    Foone🏳️‍⚧️F 1 Reply Last reply
    0
    • Foone🏳️‍⚧️F Foone🏳️‍⚧️

      hmm, reading a buffer and then summing all the values of the bytes in it.

      suspicious behavior.

      Foone🏳️‍⚧️F This user is from outside of this forum
      Foone🏳️‍⚧️F This user is from outside of this forum
      Foone🏳️‍⚧️
      wrote on last edited by
      #76

      okay I think it has a very simple 1-byte CRC check on the chunks, which are optionally not run.
      I can't make the math work but I'm reasonably sure that's what it is

      Foone🏳️‍⚧️F 1 Reply Last reply
      0
      • Foone🏳️‍⚧️F Foone🏳️‍⚧️

        okay I think it has a very simple 1-byte CRC check on the chunks, which are optionally not run.
        I can't make the math work but I'm reasonably sure that's what it is

        Foone🏳️‍⚧️F This user is from outside of this forum
        Foone🏳️‍⚧️F This user is from outside of this forum
        Foone🏳️‍⚧️
        wrote on last edited by
        #77

        okay they're using a blit that's UI-aware, so it starts the coordinate system at (1,13). Fun!

        Foone🏳️‍⚧️F 1 Reply Last reply
        0
        • Foone🏳️‍⚧️F Foone🏳️‍⚧️

          okay they're using a blit that's UI-aware, so it starts the coordinate system at (1,13). Fun!

          Foone🏳️‍⚧️F This user is from outside of this forum
          Foone🏳️‍⚧️F This user is from outside of this forum
          Foone🏳️‍⚧️
          wrote on last edited by
          #78

          looking into the blitting code I managed to steal the world map out of RAM

          Link Preview Image
          Foone🏳️‍⚧️F 1 Reply Last reply
          0
          • Foone🏳️‍⚧️F Foone🏳️‍⚧️

            looking into the blitting code I managed to steal the world map out of RAM

            Link Preview Image
            Foone🏳️‍⚧️F This user is from outside of this forum
            Foone🏳️‍⚧️F This user is from outside of this forum
            Foone🏳️‍⚧️
            wrote on last edited by
            #79

            ugh. TODO for my eventual Good DOS Debugger:
            Instant Video display.
            I don't know exactly how DOSBox-X is doing it, but while single-stepping the debugger, the display never updates. I can dump the ram at A000:0000 and see what updated, but not on the screen in DOSBox

            Foone🏳️‍⚧️F 1 Reply Last reply
            0
            • Foone🏳️‍⚧️F Foone🏳️‍⚧️

              ugh. TODO for my eventual Good DOS Debugger:
              Instant Video display.
              I don't know exactly how DOSBox-X is doing it, but while single-stepping the debugger, the display never updates. I can dump the ram at A000:0000 and see what updated, but not on the screen in DOSBox

              Foone🏳️‍⚧️F This user is from outside of this forum
              Foone🏳️‍⚧️F This user is from outside of this forum
              Foone🏳️‍⚧️
              wrote on last edited by
              #80

              found a suspicious array, which goes:
              [
              (-1,0),
              (-1,1),
              (0,1),
              (1,1),
              (1,0),
              (1,-1),
              (0, -1),
              (-1,-1),
              (0,0)
              ]

              POP QUIZ: why does the font renderer need this array? how are they being "lazy" with this array?

              Foone🏳️‍⚧️F 1 Reply Last reply
              0
              • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                found a suspicious array, which goes:
                [
                (-1,0),
                (-1,1),
                (0,1),
                (1,1),
                (1,0),
                (1,-1),
                (0, -1),
                (-1,-1),
                (0,0)
                ]

                POP QUIZ: why does the font renderer need this array? how are they being "lazy" with this array?

                Foone🏳️‍⚧️F This user is from outside of this forum
                Foone🏳️‍⚧️F This user is from outside of this forum
                Foone🏳️‍⚧️
                wrote on last edited by
                #81

                there's also this code in the for-loop that steps through this array:

                if index==8:
                color=white
                else:
                color=black

                Foone🏳️‍⚧️F 1 Reply Last reply
                0
                • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                  there's also this code in the for-loop that steps through this array:

                  if index==8:
                  color=white
                  else:
                  color=black

                  Foone🏳️‍⚧️F This user is from outside of this forum
                  Foone🏳️‍⚧️F This user is from outside of this forum
                  Foone🏳️‍⚧️
                  wrote on last edited by
                  #82

                  @dividuum got it:

                  they're drawing the font 9 times, offset in each of the 8 directions, and in black. then they draw it in white, with no offset.

                  It's a pixel-outliner! By drawing their pixel font offset in each direction, they get a black outline on their font.

                  Foone🏳️‍⚧️F 1 Reply Last reply
                  0
                  • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                    @dividuum got it:

                    they're drawing the font 9 times, offset in each of the 8 directions, and in black. then they draw it in white, with no offset.

                    It's a pixel-outliner! By drawing their pixel font offset in each direction, they get a black outline on their font.

                    Foone🏳️‍⚧️F This user is from outside of this forum
                    Foone🏳️‍⚧️F This user is from outside of this forum
                    Foone🏳️‍⚧️
                    wrote on last edited by
                    #83

                    The Answer to the DRM questions for Where in the world is Carmen Sandiego? Enhanced (DOS, 1990) are, in no particular order:

                    23
                    Kent
                    dragon
                    calcium
                    1796
                    Warren
                    revenue
                    1792
                    Willard
                    1937
                    Crater
                    Tanzania
                    Hartford
                    Duluth
                    London
                    Gem
                    Silent
                    squeaker

                    Foone🏳️‍⚧️F 1 Reply Last reply
                    0
                    • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                      The Answer to the DRM questions for Where in the world is Carmen Sandiego? Enhanced (DOS, 1990) are, in no particular order:

                      23
                      Kent
                      dragon
                      calcium
                      1796
                      Warren
                      revenue
                      1792
                      Willard
                      1937
                      Crater
                      Tanzania
                      Hartford
                      Duluth
                      London
                      Gem
                      Silent
                      squeaker

                      Foone🏳️‍⚧️F This user is from outside of this forum
                      Foone🏳️‍⚧️F This user is from outside of this forum
                      Foone🏳️‍⚧️
                      wrote on last edited by
                      #84

                      if ((0x80 >> ((byte)local_4 & 7) &
                      (int)(char)*(byte *)((int)((int *)param_1 + 1) + (local_4 >> 3))) != 0) {

                      COULD YOU USE SOME MORE CASTS MAYBE?

                      Foone🏳️‍⚧️F 1 Reply Last reply
                      0
                      • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                        if ((0x80 >> ((byte)local_4 & 7) &
                        (int)(char)*(byte *)((int)((int *)param_1 + 1) + (local_4 >> 3))) != 0) {

                        COULD YOU USE SOME MORE CASTS MAYBE?

                        Foone🏳️‍⚧️F This user is from outside of this forum
                        Foone🏳️‍⚧️F This user is from outside of this forum
                        Foone🏳️‍⚧️
                        wrote on last edited by
                        #85

                        oh it's because ghidra's near/far pointer support is shit.

                        I had param2 defined as a byte*32 and it was casting it to a byte* before using it

                        Foone🏳️‍⚧️F 1 Reply Last reply
                        0
                        • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                          oh it's because ghidra's near/far pointer support is shit.

                          I had param2 defined as a byte*32 and it was casting it to a byte* before using it

                          Foone🏳️‍⚧️F This user is from outside of this forum
                          Foone🏳️‍⚧️F This user is from outside of this forum
                          Foone🏳️‍⚧️
                          wrote on last edited by
                          #86

                          if I define it as byte* and let the calling convention implicitly define it as 32bit, it doesn't do the cast

                          Foone🏳️‍⚧️F 1 Reply Last reply
                          0
                          • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                            if I define it as byte* and let the calling convention implicitly define it as 32bit, it doesn't do the cast

                            Foone🏳️‍⚧️F This user is from outside of this forum
                            Foone🏳️‍⚧️F This user is from outside of this forum
                            Foone🏳️‍⚧️
                            wrote on last edited by
                            #87

                            well I found the decompression method.

                            as always, I hate it. decompression routines are probably my least favorite thing to reverse engineer

                            Foone🏳️‍⚧️F 1 Reply Last reply
                            0
                            • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                              well I found the decompression method.

                              as always, I hate it. decompression routines are probably my least favorite thing to reverse engineer

                              Foone🏳️‍⚧️F This user is from outside of this forum
                              Foone🏳️‍⚧️F This user is from outside of this forum
                              Foone🏳️‍⚧️
                              wrote on last edited by
                              #88

                              I think this compression is specifically designed for ASCII text, which is annoying because they've also got compressed images... which probably use a DIFFERENT COMPRESSION!

                              Foone🏳️‍⚧️F 1 Reply Last reply
                              0
                              • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                                I think this compression is specifically designed for ASCII text, which is annoying because they've also got compressed images... which probably use a DIFFERENT COMPRESSION!

                                Foone🏳️‍⚧️F This user is from outside of this forum
                                Foone🏳️‍⚧️F This user is from outside of this forum
                                Foone🏳️‍⚧️
                                wrote on last edited by
                                #89

                                it looks like this chunk has length 256, which means 253 usable bytes, and it expands to 374 bytes.

                                Not the greatest compression. a little better than just doing 6-bit ASCII.

                                Foone🏳️‍⚧️F 1 Reply Last reply
                                0
                                • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                                  it looks like this chunk has length 256, which means 253 usable bytes, and it expands to 374 bytes.

                                  Not the greatest compression. a little better than just doing 6-bit ASCII.

                                  Foone🏳️‍⚧️F This user is from outside of this forum
                                  Foone🏳️‍⚧️F This user is from outside of this forum
                                  Foone🏳️‍⚧️
                                  wrote on last edited by
                                  #90

                                  it's some kind of shifting bit mask but it starts at encoding values in 4 bits, then it can increase (or decrease, I guess) based on the input stream.

                                  then it has an output filter, where if the number specified wasn't 8 bits, it's actually an index into a predefined text table

                                  Foone🏳️‍⚧️F 1 Reply Last reply
                                  0
                                  • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                                    it's some kind of shifting bit mask but it starts at encoding values in 4 bits, then it can increase (or decrease, I guess) based on the input stream.

                                    then it has an output filter, where if the number specified wasn't 8 bits, it's actually an index into a predefined text table

                                    Foone🏳️‍⚧️F This user is from outside of this forum
                                    Foone🏳️‍⚧️F This user is from outside of this forum
                                    Foone🏳️‍⚧️
                                    wrote on last edited by
                                    #91

                                    the predefined table starts with NUL, space, then:
                                    aetonisrdlhugfcwypbmk,vSA.T'PMxBCIRGDWHqE-zNFKL0j:51YJ8\U?73Q;2!469
                                    \r\nOVXZ()*+"#$%&<=>/@[]^_`

                                    Foone🏳️‍⚧️F 1 Reply Last reply
                                    0
                                    • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                                      the predefined table starts with NUL, space, then:
                                      aetonisrdlhugfcwypbmk,vSA.T'PMxBCIRGDWHqE-zNFKL0j:51YJ8\U?73Q;2!469
                                      \r\nOVXZ()*+"#$%&<=>/@[]^_`

                                      Foone🏳️‍⚧️F This user is from outside of this forum
                                      Foone🏳️‍⚧️F This user is from outside of this forum
                                      Foone🏳️‍⚧️
                                      wrote on last edited by
                                      #92

                                      given that the most comment symbols are near the beginning, this is presumably a sort of lazy huffman coding

                                      Foone🏳️‍⚧️F 1 Reply Last reply
                                      0
                                      • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                                        given that the most comment symbols are near the beginning, this is presumably a sort of lazy huffman coding

                                        Foone🏳️‍⚧️F This user is from outside of this forum
                                        Foone🏳️‍⚧️F This user is from outside of this forum
                                        Foone🏳️‍⚧️
                                        wrote on last edited by
                                        #93

                                        but I've got the predefined table, an input file, an output file, and now I need to write some python code to replicate this, hopefully without crying

                                        Foone🏳️‍⚧️F 1 Reply Last reply
                                        0
                                        • Foone🏳️‍⚧️F Foone🏳️‍⚧️

                                          but I've got the predefined table, an input file, an output file, and now I need to write some python code to replicate this, hopefully without crying

                                          Foone🏳️‍⚧️F This user is from outside of this forum
                                          Foone🏳️‍⚧️F This user is from outside of this forum
                                          Foone🏳️‍⚧️
                                          wrote on last edited by
                                          #94

                                          "vs ses oa is isgit's tc eital and largest t u anhtA ttggh os nnotosnhrdsmarosogdn ss drte tishoth's isdhsceohtsnthminder of isgit's t nuorhdhtpast\x00 geru is slightltsn oaller than ndhd na and is o nnsgtgstbtst oa dotlalssaaolootbiaoht Sal gh, sonuhvia and sl ghh\x00isgit, ontvdn ss nhsiaalgarsnadlfnaatawlarst oadrlhrs i is a rugged land dooousr'casrbhe nrdsgs fountainsnht iah"

                                          Foone🏳️‍⚧️F 1 Reply Last reply
                                          0

                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • 1
                                          • 2
                                          • 10
                                          • 11
                                          • 12
                                          • 13
                                          • 14
                                          • 15
                                          • 16
                                          • 17
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          Powered by NodeBB Contributors
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups