Giter Club home page Giter Club logo

arsenio2044 / arsenio-src Goto Github PK

View Code? Open in Web Editor NEW
17.0 17.0 2.0 378.81 MB

Arsenio 2044 takes place in a world decimated by 4 decades of warfare, corruption, instability, and loss.

License: GNU General Public License v3.0

ReScript 3.66% C++ 92.51% C 3.11% Shell 0.01% Batchfile 0.03% Makefile 0.09% GLSL 0.27% Perl 0.20% Assembly 0.01% Objective-C++ 0.01% PowerShell 0.01% Squirrel 0.08% CMake 0.02% Python 0.02%
sdk source-engine source-sdk-2013 valve-games

arsenio-src's People

Contributors

glitchyboah avatar immortalglitchy avatar ledmic avatar tuxxego avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

arsenio-src's Issues

a lot of errors with MSBuild/Microsoft.cpp

========== Rebuild All: 0 succeeded, 24 failed, 0 skipped ==========
i was building and but project failed, all errors have to do something with MSBuild/Microsoft.cpp
I am using visual studio 2013

ui

haha no

TODO

  • inventory system

  • Weapon limits

help..

help me with these saggy nuts tux

Nameless temporary lables should be banned from s2disasm

I am going to make the claim that nameless temporary labels are harmful for every single usage this disassembly may have. These are the +, - and / labels, that are littered around the disassembly, and make reading and maintaining code a horrible experience. Why?

They do not obey scope rules quite the same as other labels. Temporary labels are limited within label scope (but may be specially addressed from outside of the scope if needed), while normal labels create a scope between each other, and macros and equates work roughly the same as normal labels as well. Nameless temporary labels do not respect label scope, but also do not create their own scope. This behavior is unusual at the very least.
They promote unmaintainable code. Just even go look at KosDec inside s2.asm. Tell me if you'd enjoy modifying this code in case you needed to add/remove something? You need to read the entire routine just to make sure that the nameless temporary labels match after your alterations - or - not add any new temporary nameless labels or remove existing ones just to be sure it will keep working. Especially for long methods that rely on skipping over these labels, as is the case with KosDec and even worse abominations elsewhere, it becomes very difficult to tell when you have missed something or made a mistake
You lose the assembler's built-in detection for missing or duplicate labels. Although normal temporary labels might not exactly be easy to name or come up with any helpful names, at least if you delete a label another piece of code is using, you will get an assembler error. Similarly, these help catch many other similar issues relating to modifying code, so you are aware of when you actually have made a mistake. This is impossible with nameless temporary labels.
You are promoting poorly documented code to newcomers and possibly even intermediary programmers. Having disassemblies show an example of code that is of poor quality intentionally is not a good way to promote people to pick up good habits such as documentation or making code that is actually maintainable. Although this isn't what disassemblies in their current state can be a gold standard on, can we at least pick out some of the most obvious bad habits we are likely to be teaching newcomers? Temporary labels have the possibility to at least give some hints about how the code flow was intended to function, so its better than just seeing a single symbol appended to a branch instruction.
The purpose of temporary nameless labels are not at all self-explanatory. What does + mean? What does - mean? How does / both work as - and + in a visually confusing manner? Yeah. This is not only a confusing and unconventional manner of defining labels, it straight up can't even follow its own rules in a way that would make it easy to use. / screws up any train of logic you might have, promoting you to make even more mistakes. Again, KosDec.
Nameless temporary labels do not respect label scope. This means a nameless temporary label $1000 bytes and 20 labels later is just as valid of a target as one few instructions away. There is no obvious flow to how they work or what their restrictions are. The system with temporary labels and normal labels works because temporary labels are always within a reaching distance, and normal labels are expected to have a range from few bytes to literally anywhere in the ROM. nameless temporary labels have the expectation of having the same limitations as temporary labels, but actually the assembler doesn't care.
Nameless temporary labels will make effective debugging a pain too because you may be unable to understand how you ended up somewhere, and even if you look upon the code which caused an issue, unless you think about it enough, you may discount the possibility that the amount of +'s doesn't actually match with the routine. These also provide complications with debugging tools, such as listings files and in-ROM debuggers, as these labels are both abundant and completely unhelpful.
Anyone either reading or writing code will find it more difficult to understand code flow that contains nameless temporary labels, because they can't just scan for the appropriate label, but they have to count the amount of symbols in most cases. For some conservative situations, for example jumping past a few lines its fine, but for routines that contain multiple +'s, it adds visual noise and requires more attention on the code flow. This does not actually help however, simply because a lot of the time you aren't reading into routines to understand their specific operation, but skimming over code to understand what it does roughly, or if the code is relevant to the programming question you are researching. It only slows you down and may take your attention away from the problem you are having to counting the +'s.
The only reason to use it is laziness. I said it. You use it because its faster to write and requires less thinking. That attitude for sure isn't going to lead better code be written, or higher quality research to be achieved. The fundamental problems with these nameless temporary labels are to be ignored because its easier? That might be true for individual programmers, and more power to them, but as far as the official disassemblies are concerned? That is a ridiculous ideal to hold..
I knew I went on lengths about my severe gripes about the nameless temporaries and my problem with them, but having been tasked to maintain code littered with these devils has truly made me hate their use. Although we can't stop people from actually using it, packaging it in as the de-facto style to do temporary labels within disassemblies is absolutely unreasonable and I really think they should be outright banned from s2disasm and any other Sonic Retro disassemblies. I would even be happier with nonsense like .a, .b, .1, .derp, .asdasdsaasd, because it still retains many of the real world usage benefits mentioned above. Nameless temporary labels fail at every level to make any sense for anything but laziness of the user, and I don't think that should be the direction the disassemblies should take for sheer convenience for the submitter. Please discuss below

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.