3 Games: Binary Master, Kolibri Puzzle Challenge

Entertainment for 5 minutes, hours, days
  • From FASM forums: http://board.flatassembler.net/topic.php?p=176085
    m3ntal wrote:Results: Last place, 5th. Do you agree?
    • No, they should've given you something
    • I don't know and don't care about what's good for technology. Please click BACK now
    • You got what you deserve: NOTHING! You don't deserve electricity or heat in the winter. You don't deserve to afford to continue programming. Your 6 year old son doesn't deserve shelter and heat
    * What? Mine - Theirs

    * Written in? 100% FASM. Very professional - C/C++, some ASM. Amateurish, careless
    * Portable? Yes, 100% - Absolutely not
    * Runs native on Windows? Yes, translation - No, emulation only
    * Educational? Yes, teaches binary, spelling, etc - No
    * For programmers? Yes - No, unrelated to programming
    * Graphics? Fast, custom, portable - Kolibri's misaligned 24BPP graphics. Horribly documented. It appears as though there's no way to draw a 32BPP image/buffer to Window for manual graphics ("just use our graphics"). After all, 32BPP is the true VESA color depth. To reduce space, images can be stored as 1/2/4/8BPP with palette.
    * Number of games? 3 unique games, much harder. From a gamer's perspective, one big game may be better than 3 smaller ones, but speaking as a developer, it's more of a challenge to make 3 different games with separate styles, art, objectives, etc, than to increase the size or complexity of one game
    * Usefulness? My code, macros, language and library, is, by far, the most useful and I've proven it with endless examples (as if humans care about truth and evidence, they're not experienced enough to evaluate what's "good" code). For years to come, my examples will help, teach and inspire programmers.
    SOURCE QUALITY

    I understand this is a game competition, not a programming competition, but I assume the reason for having this to help and encourage others to make games? Source quality should have *something* to do with the decision. That's what determines its usefulness as an example to programmers in the future.

    I understand they judge by the game... even if the source is completely illogical and useless to everyone? In that case, why would you want the source? It just gives Kolibri a bad reputation of accepting any random trash and having no quality control (junkyard like FreshLib). It'd be better to just take the game without source. Send that to the Recycle Bin where it belongs!

    UNFAIR CHALLENGE

    I knew it wasn't a fair challenge since the rules were designed to allow anyone to enter using anyone else's code, graphics and even take someone's entire games. It really should matter if you created the game or not/converted.

    I created everything by myself, wrote every single line, language, library, all graphics, designed and created my own games for both systems, 6 originally reduced to 3, worked all month, everyday, harder than anyone else. Do I deserve last place? Nothing?

    ONLY 3 PRIZES?

    "But there were only 3 prizes and more contestants than we anticipated" - Ok. Then they should've modified the rules to offer prizes to 4th and 5th place like $200 and $100? "We've decided to give everyone something. No one who made a game gets nothing". $100 would've been nice. If you've got $1,750, what's an extra $300 to treat everyone right?

    Thanks to the one who entered my examples. He can have the prizes I supposedly won in the Windows game competitions (unless it's money or electronics that I can sale). A lot of people in this world have money. No one else has what I have to offer. I feel like they lost... one of the best independant developers in this Universe.

    Happy New Years! :) One little Christmas tree left and it's caked with snow (mbr :) check out Bootsy)
    Dave Navarro: You DO have what it takes to be CodeMaster
    Image

    Abakis excerpts. Most recent code:
    Spoiler:

    Code: Select all

    function draw.bit, n, x, y
      if n
        draw.image bit1.i, x, y
      else
        draw.image bit0.i, x, y
      end
    endf
    
    function draw.byte, n, x, y
      locals i
      . i=8
      loop i, r0=n, r1=i, r1--, r0>>cl, r0&1
        draw.bit r0, x, y
        . x+BIT.W
      endl
    endf
    
    function draw.pixel, x, y, c
      alias p=r0, z=r1
      try clip.pixel x, y
      vga.xy x, y
      . z=c, (u32) *p=z
    endf 1
    
    function draw.line.h, x, y, n, c
      alias p=r0, z=r1, w=r2
      . p=&x, z=&y, w=&n
      try clip.line 0, p, z, w
      vga.xy x, y
      . z=c
      loop n, (u32) *p++=z, endl
    endf 1
    
    ; draw solid rectangle
    
    function draw.box, x, y, w, h, c
      locals i
      try visible x, y, w, h
      . i=y, i--
      loop h, i++
        draw.line.h x, i, w, c
      endl
    endf 1
    
    ; draw scanline
    
    function draw.scanline, pixels, x, y, w
      locals i
      alias p=r0, s=r1
      vga.xy x, y
      . s=pixels
      loop w, (u32) *p++=*s++, endl
    endf 1
    
    ; draw 8BPP scanline/bitmap with palette
    
    function draw.scanline.8, pixels, x, y, w
      alias p=r0, s=r1, c=r2, q=r3
      vga.xy x, y
      . s=pixels
      loop w, q=*s++, q*4, q+palette.p
        . (u32) c=*q, (u32) *p++=c
      endl
    endf 1
    
    function draw.bitmap.8, pixels, x, y, w, h
      locals i, p
      try visible x, y, w, h
      . i=y, i--, p=pixels
      loop h, i++
        draw.scanline.8 p, x, i, w
        . r0=w, p+r0
      endl
    endf 1
    
    function draw.my.numbers
      locals i, n, y
      . i=bits.h, y=404
      loop i, r0=my.numbers, r0+i, r0--
        . r0=*r0, n=r0
        draw.byte n, 4, y
        . y-BIT.H
      endl
    endf
    
    function draw.title.scene
      draw.text help.t, 16, 130
      draw.byte magic.n, 50, 300
    endf
    
    function draw.play.scene
      draw.board
      draw.my.numbers
    endf
    
    function draw.pause.scene
      draw.text pause.t, 16, 130
      draw.byte magic.n, 50, 300
    endf
    
    function draw.game.over
      print t, game.over.t, score
      draw.text t, 44, 170
      draw.byte magic.n, 50, 300
    endf
    
    ; convert 32BIT binary number to text
    
    function b2t, n, t
      alias p=r0, x=r1
      . p=t
      if n=0, *p++='0', *p=0
        return
      end
      while n, x=n, x&1, x+'0'
        . *p++=x, n>>>1
      endw, *p=0
      text.reverse t
    endf
    
    ; text.copy a, b - standard copy with
    ; 0 after. return advanced address
    
    function text.copy, a, b
      alias p=r0, s=r1, c=r2
      . p=a, s=b, c=1
      while c, c=*s++, *p++=c, endw, p--
    endf
    
    ; text.copy.n a, b, n - copy with maximum
    ; size specified. return &
    
    function text.copy.n, a, b, n
      alias p=r0, s=r1, c=r2
      . p=a, s=b
      loop n, c=*s++, *p++=c
        if c=0, break, end
      endl, p--
    endf
    
    ; text.go t, n - advance to line #
    
    function text.go, t, n
      loop n
        try t=text.find t, 0Dh
        . t+2
      endl
    endf t
    
    ; text.skip.0 a - skip 0s, return address or 0
    
    function text.skip.0, a
      alias p=r0, c=r1
      . p=a, c='0'
      while c='0', c=*p++, endw, p--
      if c=0, return 0, end
    endf
    
    ; convert text to 32BIT binary
    
    function t2b, t
      alias p=r0, c=r1, n=r2
      try text.skip.0 t
      . n=0
      loop, c=*p++
        if c=0, return n, end
        . n<<1, n-'0', n+c
      endl
    endf
    
    function draw.my.text, t, x, y
      locals p, n
      get n=text.n t
      . p=t
      loop n, r0=p, r0=*r0
        draw.my.c r0, x, y, WHITE
        . x+r0, x+4, p++
      endl
    endf
    
    function draw.my.word, t, x, y
      locals p, n, w, c, co
      get n=text.n t
      . p=t
      loop n, r0=p, r0=*r0, c=r0
        get w=get.my.cw c
        text.find used.letters, c
        if true
          . r0=x, r0+18, r1=w, r1/2, r0-r1
          draw.my.c c, r0, y, WHITE
        end
        . r0=x, r0+2, r1=y, r1+48
        draw.box r0, r1, 32, 3, WHITE
        . r0=36, x+r0, p++
      endl
    endf
    
    function on.key
      if key.event='c'
        if scene=SCENE.TITLE
          . scene=SCENE.PLAY
          go .draw
        end
        if scene=SCENE.GAME.OVER
          go .reset
        end
        if key='r'
          .reset:
          reset.game
          go .draw
        end
        if key='p'
          .pause:
          if scene=SCENE.PLAY
    	. scene=SCENE.PAUSE
          else.if scene=SCENE.PAUSE
    	. scene=SCENE.PLAY
          end
          go .draw
        end
        .draw:
        render
      end
    endf
    
    function randomize.puzzle
      locals q, n
      alias p=r0, x=r1
      . q=puzzle, n=(MAP.W*MAP.H)
      loop n
        get x=get.random
        . p=q, (u32) *p=x, q+4
      endl
    endf
    
    function is.solved
      locals n
      alias p=r0, x=r1
      . p=puzzle, n=(MAP.W*MAP.H)
      loop n, (u32) x=*p++
        if x<>NORMAL, return 0, end
      endl
    endf 1
    
    function draw.puzzle
      locals x, y
      . y=0
      while y<8, x=0
        while x<8
          . r0=x, r0*TILE.W, r0+MAP.X
          . r1=y, r1*TILE.H, r1+MAP.Y
          draw.piece x, y, r0, r1
          . x++
        endw
        . y++
      endw
    endf
    
    function on.mouse
      locals r
      if mouse.event='c'
        . r0=&close.i.x
        if.select r0
          exit
        end
        if scene=SCENE.TITLE
          reset.game
          . scene=SCENE.PLAY
          go .draw
        end
        if scene=SCENE.PLAY
          if.select puzzle.box
    	get.select.xy
    	get r=get.piece.rotate \
    	 select.x, select.y
    	. r++
    	set.piece.rotate \
    	 select.x, select.y, r
    	go .draw
          end
        end
        if scene=SCENE.SOLVED
          reset.game
          . scene=SCENE.TITLE
          go .draw
        end
        .draw:
        render
      end
    endf
  • Repost from FASM forums:
    ---------------------------------------------------------------

    OMG, how have you come up with all those wrong conclusions????
    1. You haven't lost KolibriOS game competition simply because there was no voting made yet! Voting will take place only around 15th Jan.
    2. Our competition rules in fact FAVOR contestants that submit more than 1 game (up to 3 games are allowed), since each game gives you one contest entry. We got 11 games submitted to the contest so far (1 later withdrawn), so you have 3 chances out of 10 to win a prize, rather than other competitors that only get 1 chance out of 10.
    3. You wrote that "the rules were designed to allow anyone to enter using anyone else's code, graphics and even take someone's entire games. It really should matter if you created the game or not/converted." This is NOT TRUE! We only allowed taking anyone's else graphics (and ONLY if it's licensed under free license) - we never allowed taking anyone's else code. What we did allow is porting your own game from another OS to KolibriOS.
    4. KolibriOS DOES have native drawing for 32bpp - please check SysFunc 65 and 73: http://websvn.kolibrios.org/filedetails ... sfuncs.txt
    5. To our competition, you submitted both Windows and KolibriOS versions of your games. We have no use of Windows versions (and we never asked for them). So we cannot count your work as 6 games - but only as 3 games.
    6. But coincidentally, another Russian website (totally unrelated to KolibriOS) has just started their own puzzle/logic game contest at the same time: http://igdc.ru/igdc_top.php?konkurs=117
      They do not award money prizes - only Steam games keys. But I have told you - since you created Windows versions anyway, and we didn't ask for them, I can submit your Windows games on your behalf to that other site, in hope that you win at least a Steam game with them. You got 5th place out of 7 there, and you can get 1 Steam game of your choice that costs "2 gold coins" from this list: http://igdc.ru/gifts/
      Again, this is IN ADDITION to KolibriOS competition which has no voting done yet!
    7. Your KolibriOS versions of the games only work in 1024x768 resolution - this is a big minus when voting will be cast, and I have written this to you, but you ignored what I said! Maybe haven't ignored - you wrote that you have no internet at home, so you cannot read the forums all the time... but you cannot blame us for that!
    8. Your FASM code DOES look professional to me so in fact I wanted to offer to HIRE YOU to write FASM code for KolibriOS as a job (since I understood you are unemployed? - if you have no money to pay for the internet?) - but you replied "Not interested. No thanks. Sorry, you lost the best." - so why do you complain?
    9. The only concern I had is who wrote ABAKIS macro library - was it you or someone else - and that's ONLY because you submitted the games under DIFFERENT username (codestar and not m3ntal). Yes, it's logical to question the origin when I think that you are 2 separate persons! Why have you done that? To confuse us?
  • m3ntal wrote:"What did I gain from this experience that's not money?"

    * True OS portability just by changing one line in A.INC: define cpu intel windows ; < replace with kolibri
    * Idea: I-Touch OS. Native Play Store/Market. An opportunity for ASM programmers to make $
    * Abakis improvements, clearer and tighter
    * For Abakis, minimal graphics and font
    * Image/BMP injectors, loaders at assembly time (IMAGE.INC)
    * Abakis now assembles with latest UN-edited version of FASM. I've discovered that if you always use UPPERCASE for directives - IF/ELSE/END/WHILE/X - then you can re-define the lowercase if/else/end/while/x for runtime. I had to think of a way to do this for FASM on Kolibri which is the Intel FASM with Kolibri system
    * Motivation to create a portable internet browser

    "What's the difference between Abakis and other macro languages you've introduced? Z/77 and Magic-ARM?"

    * Abakis: Language: Strongest. Pointer arithmetic, multi-statements, custom loops. Library: Small/medium. Stability: Good, used to make 3 games and examples. Portable? About 97% CPU portable with only a few lines in the entire library that are Intel specific: r0>>cl | push a b | pop b a. push/pop order would be same a-b for both on ARM and M68k

    * Magic-ARM Compiler: Language: Strong. Pointer arithmetic and mini expressions. Abakis is more compact. Library: Small. Stability: Unknown, used to make 12+ examples. Portable? No, but it's a general syntax that's convertable to/from C. Not easy to translate to I32.

    * Z/77: Language: Minimal. Library: Biggest by far. Stability: Best, used to make 100s of programs. Example: ARM Visual Disassembler. Abakis will eventually replace this old language. Portable? No, not much

    "What type of programming was I doing before the Kolibri competition?"

    * ARM GPS, Mio 200
    * Abakis for ARM. Eventually, for Motorola 68K, MIPS and PowerPC
    * Native Virtual Machine, Translator. For systems programming
    * Universal Assembler module (UASM.INC). Allows one/any language to be used for all CPUs. Users can select the language, CPU and OS. Abakis will be the default language with optional Sexy.INC names (ThisStyle) and there will be macro versions of the popular languages - C/C++, Pascal and BASIC. One file each. Example: BASIC.INC. For Java/CIL, the language would be a slight variation of Abakis without pointers and interrupts.

    "Would I consider working for Kolibri as a paid developer?"

    Yes, but only as an independant developer who designs and creates my own software. Every week, I can present new designs for programs. If they are interested, I can create for Windows then convert to Kolibri. Uploaded more ideas to Projects forum today.

    Initially, I was a little upset but just need time to recuperate. Not upset at Kolibri, its moderators or anyone else, just upset that I invested a month of time for seemingly "nothing" (of money value).

    "Can I create a web browser for Kolibri?"

    Yes, if I had internet service, a little time and money. A "browser" is just a document viewer that downloads a source file from the internet. It can use any simple script, it doesn't have to support HTML/CSS/JS/X+. Start with just this:

    Code: Select all

    [;] Example internet script:
    http://www.user.com/my.page[/;]
    
    [title='My Site']
    [t]Welcome to my site[/t]
    [image='my.gif']
    Kolibri only has the ability to download a file so this idea is a big upgrade.

    PS: On phone, can't really view/reply. No internet service at home. I create documents on my PC, transfer to phone, walk outside with my Android phone (HD Razr Maxx) to access WIFI then send. Next time I go outside to walk the dog, I'll check this message.
  • m3ntal wrote:yogev_ezra. Good news! Ok, Ill update the games to support any OS screen size, allocate a "vga/memory buffer" then copy it using that function after waiting for vertice retrace. This should eliminate flickering. Outside with my phone in the freezing cold, 13 degrees.

    MHajduk and tom. Thanks.
  • m3ntal wrote:yogev_ezra: Sorry about that. Finished. Here are the updated Kolibri-only games. Detects resolution. No flickering.

    Updated Abakis main download It's been about a month. See /INCLUDE/ and EXAMPLES > APPLICATION.ASM. FASM Mobile IDE:
    Spoiler:Image
    Thank you for that - I have downloaded the archive with updated games. I don't have time to check them now, but I promise to do so on weekend. But I hope you understand that voting will happen based on game versions that were submitted till 31 December 2014 (this is for all contestants - not just you).
  • В папку с этими играми (Codemaster) стоит положить Readme с указанием, что поддерживается только разрешение 1024х768.
  • Who is online

    Users browsing this forum: No registered users and 4 guests